私はちょうどSICPの仕事を始めています(これはクラスではありません)、私は2,3日間練習1.6に苦労しています。私はそれを理解できないようです。彼女はいくつかの簡単な例で正常にそれをテストして、ちょうど働いた平方根プログラムを(再書き込みするためにそれを使用していますSICPでの演習1.6の説明は何ですか?
(define (new-if predicate then-clause else-clause)
(cond (predicate then-clause)
(else else-clause))
:これは、アリッサは1であるので、同様に、cond
の面でif
を再定義しますif
罰金):
(define (sqrt-iter guess x)
(new-if (good-enough? guess x)
guess
(sqrt-iter (improve guess x)
x)))
質問そして尋ねる:「アリッサは平方根を計算するためにこれを使用するために説明しようとしたときに何が起こります?。」 [good-enough?
、improve
など]を再現してもらえれば幸いです。]
ここで私は何が起こるか知っています。これは決して値を返しません。つまり、プログラム無限に繰り返すなぜこれが起こるのか説明できません。 if
とnew-if
の間に何らかの微妙な違いがあっても私は逃げ出しています。どなたでも大歓迎です。
"再帰的"の動詞形式は "再帰する"ため、 "再帰的"になります。 –
あなたの質問のタイトルは間違っています:あなたは1.4ではなく、エクササイズ1.6を指しています。 – systemovich
@Geoffrey Van Wykそうです。私が質問を書いたとき、私はSICP第1版の私の古いコピーを使って作業していました。この問題は、練習問題1.4に現れています。第2版では、エクササイズ1.6です。私は変更を行います。 –