【发布时间】:2014-12-29 08:21:18
【问题描述】:
我在 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(即iterator的初始值是什么),并举例说明它给出的错误结果。另外,你写的代码怎么会返回true? -
第二种情况应该评估为
true,而不是进一步递归。这是错误,感谢帮助我找到它!
标签: recursion f# functional-programming primes primality-test