練習問題 3.11 (3)

末尾再帰的関数を使ってフィボナッチ数を計算する iterfib

 # let iterfib n =
     let rec fibn (x, y) i =
       if i = n then y
       else fibn (y, x + y) (i+1)
     in
   fibn (0, 1) 1
   ;;
 val iterfib : int -> int = <fun>
 # iterfib 1;;
 - : int = 1
 # iterfib 2;;
 - : int = 1
 # iterfib 3;;
 - : int = 2
 # iterfib 4;;
 - : int = 3
 # iterfib 5;;
 - : int = 5
 # iterfib 6;;
 - : int = 8

ちゃんと末尾再起になってるよね?