0
を質問再帰のこの例があります:スキーム/シンプルな再帰が<em>コンクリート抽象</em>で
(define subtract-the-first (lambda (n)
(if (= n 0) 0
(- (subtract-the-first (- n 1)) n))))
この私が理解しています。たとえば、n = 3の場合、この関数は次のように評価されます。 (- (+ (+ (+ 1) 2) 3))
- > -6
ただし、次のいずれかの例では、操作の順序を切り替えることができない理由を説明しています。たとえば、のは、これを見てみましょう:私は(減算--first2 4)を呼び出す
(define subtract-the-first2 (lambda (n)
(if (= n 0) 0
(- n (subtract-the-first2 (- n 1))))))
場合、結果は2しかし、私はかなりの評価を理解していないされています。明らかに、私はここで間違いを犯しています。これは (- 4 (+ 3 (+ 2 (+ 1))))
です。これは(- 4 6)
と等しく、したがって-2と評価されます。私はすでに半分の時間かそこらのために私に壁に頭を叩いてきたよう
私は任意のポインタを感謝...
ありがとうございました!
ありがとうございました!私は評価について何らかの間違った仮定をしましたが、今はっきりしています。 – talkinghead