我剛開始工作通過SICP(我自己;這不是一個班級),並且我一直在努力練習1.6幾天,我似乎無法弄清楚。在cond
而言這是一個地方賈靜雯重新定義if
,像這樣:SICP練習1.6的解釋是什麼?
(define (new-if predicate then-clause else-clause)
(cond (predicate then-clause)
(else else-clause))
她成功地測試它在一些簡單的情況下,然後使用它來重新寫的平方根程序(這只是工作細跟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
之間存在什麼細微差別,都無法避免。任何和所有的幫助非常感謝。
「遞歸」的動詞形式是「recurse」,所以它「遞歸」。 – 2009-07-23 11:57:29
你的問題標題是錯誤的:你指的是練習1.6,而不是1.4。 – systemovich 2010-12-12 15:24:23