我有一个小问题:我想用OCaml解决this problem,
所以我尝试了->
-> let rec somme x = if ( nor (bool_of_int (x mod 3)) (bool_of_int (x mod 5))) then x + (somme x-1) else (somme x-1) ;;
val somme : int -> int = <fun>
-> somme 1000 ;;
Stack overflow during evaluation (looping recursion?).
我做错了什么?
我尝试过的新代码:
let somme2 x = if (( nor (bool_of_int (x mod 3)) (bool_of_int (x mod 5)))) then x + somme (x-1) else somme (x-1) ;;
let somme x = if x = 0 then x else somme2 x ;;
同样的错误。
最佳答案
1)您的回馈永远不会停止,在开始时添加if x == 0 then 0 else ...
之类的测试
2)您不要在x-1
上加上括号,因此ocaml读取(somme x)-1
。改写somme (x-1)
。