SICP問題3.9

1.2.1節の階乗を計算する手続き
再帰

(define (factorial n)
  (if (= n 1)
      1
      (* n (factorial (- n 1)))))

反復版

(define (factorial n)
  (fact-iter 1 1 n))
(define (fact-iter product counter max-count)
  (if (> counter max-count)
      product
      (fact-iter (* counter product)
                 (+ counter 1)
                 (max-count))))

それぞれの版を使って

(factorial 6)

を評価する時、作り出される環境構造を示せ。

再帰

反復版