let rec prime : int -> bool
= fun n -> let rec f a = if (a = 1) then 1
else if (n mod a) = 0 then 0
else if ((f a-1) = 1) then 1
else 0
in
if ((f n-1) = 1) then true
else false
从我的代码中可以看出,我想实现一个能够判断给定数字是否为素数的函数。
我可以编译并运行此代码,但是对于所有X函数都告诉“false”。
为什么会这样?
提前致谢。 :)
答案 0 :(得分:0)
表达式:
f n-1
解析如下:
(f n) - 1
你需要写下这个:
f (n - 1)
答案 1 :(得分:0)
.purchased
((f n-1) = 1)
相当于f n-1
,而不是(f n) - 1
。所以你取一个0或1的数字,然后减去1(产生-1或0),然后看它是否为1,它永远不会是。
请注意,如果你使f (n - 1)
返回一个布尔值而不是一个整数(你不能从一个布尔值中减去),这甚至都没有编译。