1

使用した数値に応じてコードを実行すると、2 つの異なる動作が見られたとき、SICP 本の演習 1.6 の解決に取り組んでいました。

sqrt-iter プロシージャを呼び出すときに自然数を使用すると、インタープリターは決して停止しませんが、浮動小数点数を使用して 10 進数の除算を強制すると、インタープリターは次のように応答します: Aborting!: maximum recursion depth exceeded.

異なる動作の理由を知っている人はいますか?

コードを実行したい人を助けるために、回答の要旨を作成しました。コピーして貼り付けるだけです:http://bit.ly/Qv1wru。mit-scheme のバージョンは 9.1.1 です。

4

1 に答える 1

1

あなたのgood-enough?手順は間違っているようです。これを試してください:

(define (good-enough? guess x)
  (< (abs (- (sqr guess) x)) 0.001))
于 2012-09-10T05:01:20.000 に答える