0
在混凝土抽象,有遞歸的這個例子:計劃/簡單而又重複的問題
(define subtract-the-first (lambda (n)
(if (= n 0) 0
(- (subtract-the-first (- n 1)) n))))
這我明白。例如,如果n = 3,則此函數的計算結果爲: (- (+ (+ (+ 1) 2) 3))
- > -6
但是,在其中一個後續示例中,應該解釋爲什麼無法切換操作順序。例如,讓我們來看看這個:
(define subtract-the-first2 (lambda (n)
(if (= n 0) 0
(- n (subtract-the-first2 (- n 1))))))
如果我叫(減去最first2 4),結果是2。但是,我不太明白評價。顯然,我在這裏犯了一個錯誤,因爲看到這個: (- 4 (+ 3 (+ 2 (+ 1))))
,這等於(- 4 6)
,因此評估爲-2。
我明白任何指針,因爲我一直在敲打我靠在牆上頭半小時左右已經...
謝謝!
非常感謝!我對評估做了一些錯誤的假設,但現在已經很清楚了。 – talkinghead 2012-03-27 12:11:27