タグ

ブックマーク / karetta.jp (1)

  • Karetta|Gaucheプログラミング(立読み版)|末尾再帰

    末尾再帰とは評価の一番最後に自分自身を呼び出して、後は値を返すだけその後になにもやることが残っていない(あとは値を返すだけの)再帰のことです。 先ほどの階乗を求める計算を末尾再帰で書き直した例は以下の通りです。 (define (fact n) (define (fact-iter n ans) (if (zero? n) ans (fact-iter (- n 1) (* n ans)))) ; 最後に自分自身を呼び出している (fact-iter n 1)) ここでは手続きfactを補助するためのfact-iterという手続きが末尾再帰となっています。この場合、5を与えると (fact 5) ((fact-iter 5 1)) (((fact-iter 4 5))) ((((fact-iter 3 20)))) (((((fact-iter 2 60))))) ((((((fact-

  • 1