我在使用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