我正在學習Clojure,我剛開始Project Euler,我遇到了一個我無法弄清楚的問題。這裏是我的代碼:無盡的循環再現
(defn largest_prime_factor
[x]
(if (prime? x) x)
(loop [running x divider 2]
(if (= 0 (mod running divider))
(let [d (/ running divider)]
(if (prime? d)
d
(recur d 2)))
(recur x (inc divider)))))
(largest_prime_factor 12) ;works
(largest_prime_factor 49) ;works
(largest_prime_factor 147) ;Endless loop!
我知道這可能不是找到最大的主要因素,但我想要搞清楚的是爲什麼它陷在一個循環的最有效的方式。很明顯,我使用循環錯誤的方式,但我做錯了什麼?
謝謝。我太在意另一個問題了 – DPA 2013-03-21 09:04:35