階乗の計算式
n! = n * (n-1)! (n>0の場合) 1 (n=0の場合)
n! =
n * (n-1)! (n>0の場合)
1 (n=0の場合)
をそのままプログラムにしたら末尾再帰の最適化はできないよな?
Permalink | 記事への反応(1) | 00:34
ツイートシェア
うん。できない。末尾再帰の最適化ができる形式の階乗は、 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...