我在使用F#中的素数检查器时遇到了一些问题。它似乎没有给出正确的结果,所以我猜我已经搞砸了逻辑的某处,但我不知道在哪里。这个实现是一个简单的暴力破解,所以逻辑并不复杂,我之前实现了使用for循环的类似解决方案。素数检查
let rec isPrime iterator (n : int) =
match iterator with
| 1 -> isPrime (iterator + 1) n
| a when a = n -> isPrime (iterator + 1) n
| _ -> match n % iterator = 0 with
| true -> false
| false -> isPrime (iterator + 1) n
你可以充实你的问题来解释你最初如何调用isPrime(即迭代器的初始值是什么),并给出一个错误结果的例子。另外,你写的代码如何返回“真”? – 2014-11-02 16:09:55
第二种情况应该评估为“真”,而不是进一步递归..这是错误,感谢帮助我找到它! – 2014-11-02 16:12:27