問題1.10

僕の解答

わっかんねー!
とりあえず、実行してみると

(A 1 10) ;=> 1024
(A 2 4)  ;=> 65536
(A 3 3)  ;=> 65536

でも、これだけじゃさっぱり分からん。

まず

(define (f n) (A 0 n))

を展開すると、

(* 2 n)
;ただし、n=0のときは0、n=1のときは2
;って、条件付けてもかわんないじゃん。

で、次に

(define (g n) (A 1 n))

を展開すると

(A 0 (A 1 (- n 1)))

こんな感じになる。

ここで、(A 0…はf(n)、(A 1…はg(n)、なので

(define (g n)
        (cond ((= n 0) 0)
              ((= n 1) 2)
              (else (* 2 (g (- n 1))))))

こんなかんじ。
つまり「2^n(n=0のときは0)」

で、最後を展開すると

(A 1 (A 2 (- n 1)))

(A 1…はg(n)で、(A 2…はh(n)。
…で、ここで挫折。

所感

nが整数ってのを忘れてた。
解答例を見てもイマイチ、理解しきれてない…