末尾再帰的関数を使ってフィボナッチ数を計算する 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
ちゃんと末尾再起になってるよね?