這是一項家庭作業。 OCaml似乎是由精神病患者做出的。製作isPrime函數時遇到問題
let prime : int -> bool
= fun n ->
if n > 2 then
let a = n - 1 in
let rec divisor n a =
if a > 1 && n mod a = 0 then false
else if a = 2 && n mod a <> 0 then true
else divisor n a-1 ;;
else if n = 2 then true
else if n = 1 then false
我在編碼不好的,我知道我的isPrime
算法是錯誤的。 但我想知道在我的代碼中哪裏是產生語法錯誤的錯誤。
還有什麼辦法可以在遞歸形式中定義isPrime
函數嗎?
例子:
let rec prime n = ~
總是在二元運算符周圍放置空格:'f n-1'太容易誤讀爲'f(n-1)'並且很難找到您的錯誤。通過寫'f n - 1',你有更多的機會注意到它實際上被解析爲'(f n) - 1'。 – camlspotter