最近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
ストリングバージョンのリバースを使ってごまかしているような気がするので、このバージョンは好きではありません。