我一直在玩的Clojure最近,我不能讓這個算法的工作:功能算法,扭轉了一些
(defn reverse-number [number reversed]
(if (= number 0)
reversed
(reverse-number (/ number 10)
(+ (rem number 10) (* reversed 10)))))
這是我應該怎麼稱呼它(reverse-number 123 0)
,我希望結果是: 321
。 當我運行這個,REPL只是掛起。
有人可以解釋我,請問,發生了什麼,我做錯了什麼,以及如何讓這個功能工作?
注意:我知道我可以使用字符串函數來反轉一個數字。其實,我已經這樣做了,但我對這個解決方案不感興趣。我想要的是讓功能語言飛躍。這就是爲什麼我嘗試多種方法。
使用字符串函數:
(defn reverse-number [n]
(Integer. (clojure.string/reverse (str n))))
(reverse-number 123) ; --> 321
我不喜歡這個版本,因爲它感覺就像使用反向的字符串版本作弊。
什麼會'3210'可以在扭轉? – Gumbo
@Gumbo:'123',爲什麼?這是我期望的答案。我當然不會指望'0123',因爲那不會是一個正確的數字...... –