僕の解答
わっかんねー!
とりあえず、実行してみると
(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が整数ってのを忘れてた。
解答例を見てもイマイチ、理解しきれてない…