僕の解答
プログラムを修正してみる。
(define (cube x) (* x x x)) (define (p x) (display (list "p" x)) (newline) (- (* 3 x) (* 4 (cube x)))) (define (sine angle) (display (list "sine" angle)) (newline) (if (not (> (abs angle) 0.1)) angle (p (sine (/ angle 3.0))))) (display (sine 12.15)) (newline)
でまあ、5回呼ばれていると。
(sine 12.15) (sine 4.05) (sine 1.3499999999999999) (sine 0.44999999999999996) (sine 0.15) (sine 0.049999999999999996) (p 0.049999999999999996) (p 0.1495) (p 0.4351345505) (p 0.9758465331678772) (p -0.7895631144708228) -0.39980345741334
引数を増やしていくと、だいたい5倍で、スペース、計算量が1増える感じ。だから対数的な増加か。増加の程度はO(log n)かな?
解答例
所感
angle/3をn回繰り返す、と考えればよかったのか…
もっと頭を使わないと…orz