階乗の計算式 n! = n * (n-1)! (n>0の場合) 1 (n=0の場合) をそのままプログラムにしたら末尾再帰の最適化はできないよな?
うん。できない。末尾再帰の最適化ができる形式の階乗は、 n! = fact_iter(n,1)fact_iter(0, acc) = accfact_iter(n, acc) = fact_iter(n-1, acc*n) だ。 schemeで書くなら (define (fact n) (define (iter n acc) (if (= n 0) ac...