这是一项家庭作业。 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