SICP第1章(4)
問題1.15
a
実際に関数pの最初に
(display (format "x = ~a\n" x))
を入れて実行してみれば簡単か。
x = 0.049999999999999996 x = 0.1495 x = 0.4351345505 x = 0.9758465331678772 x = -0.7895631144708228
となり、5回呼ばれた。
問題1.16
ヒントにあるようにが不変になるように考えてみる。例えば3^10だったら以下のようになればよい。
b n a 3 10 1 9 5 1 9 4 9 81 2 9 6561 1 9 6561 0 59049
つまり、nが偶数のときはb=b^2, n=n/2, a=aとして再帰、奇数のときはb=b, n=n-1, a=b*aとする。