ほとんどの参照は演算子に関するものであり、関数のすべてのアプリケーションは非常に混乱しているため、コードでのiterate
使用方法や、それが何であるかはまだわかりません。iterate
partial
私はプログラミングの宿題をしていて、ニュートン法を使用して数値 n の平方根を取得しようとしています。つまり、初期近似としての推測を使用して、近似と n/近似の平均を計算することにより、新しい近似を計算し続けます。最新の 2 つの近似値の差がイプシロン未満になるまで続けます。
私は最初に近似部分をやろうとしています。それは反復と部分を使用する必要があると思います。そして後で、イプシロンは「テイク」を使用する必要があるものですか?
イプシロンなしで近似するためのコードは次のとおりです。
(defn sqrt [n guess]
(iterate (partial sqrt n) (/ (+ n (/ n guess)) 2)))
このコードは正しく機能しませんが、入力する(sqrt 2 2)
と が表示されます(3/2 user=> ClassCastException clojure.lang.Cons cannot be cast to java.lang.Number clojure.lang.Numbers.divide (Numbers.java:155)
。
これは何度も繰り返す必要がある部分だと思いますか?誰かヒントを教えてください。繰り返しますが、これは宿題の問題なので、問題全体の直接的な解決策を私に提供しないでください。私が学べるアイデアと説明が必要です。