問題5.27 – SICP(計算機プログラムの構造と解釈)その277
2009年11月16日
問題5.27
再帰的 factorial でのスタックの最大深さとプッシュ総数を調べる。
;;; EC-Eval input:
(define (factorial n)
(if (= n 1)
1
(* (factorial (- n 1)) n)))
(total-pushes = 3 maximum-depth = 3)
;;; EC-Eval value:
ok
;;; EC-Eval input:
(factorial 3)
(total-pushes = 80 maximum-depth = 18)
;;; EC-Eval value:
6
;;; EC-Eval input:
(factorial 4)
(total-pushes = 112 maximum-depth = 23)
;;; EC-Eval value:
24
;;; EC-Eval input:
(factorial 5)
(total-pushes = 144 maximum-depth = 28)
;;; EC-Eval value:
120
;;; EC-Eval input:
(factorial 6)
(total-pushes = 176 maximum-depth = 33)
;;; EC-Eval value:
720
;;; EC-Eval input:
(factorial 7)
(total-pushes = 208 maximum-depth = 38)
;;; EC-Eval value:
5040
;;; EC-Eval input:
(factorial 8)
(total-pushes = 240 maximum-depth = 43)
;;; EC-Eval value:
40320
| n | total-pushes | maximum-depth |
|---|---|---|
| 3 | 80 | 18 |
| 4 | 112 | 23 |
| 5 | 144 | 28 |
| 6 | 176 | 33 |
| 7 | 208 | 38 |
| 8 | 240 | 43 |
T = (32 * n) - 16
D = (5 * n) + 3
実験の総括
| 最大深さ | プッシュ回数 | |
|---|---|---|
| 再帰的階乗 | (5 * n) + 3 |
(32 * n) - 16 |
| 反復的階乗 | 10 |
(35 * n) + 29 |
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542
