練習問題8.4

参照と繰り返しの構文(while,for)を使ってフィボナッチ数を求める関数を定義しなさい。

 # let fib n =
     let fibs = ref (1, 1) in
     let i = ref 1 in
     while !i < n do
       fibs := (snd !fibs, fst !fibs + snd !fibs);
       i := !i + 1
     done;
     snd !fibs
   ;;
 val fib : int -> int = <fun>

初項を第0項とした。

 # fib 0;;
 - : int = 1
 # fib 1;;
 - : int = 1
 # fib 2;;
 - : int = 2
 # fib 3;;
 - : int = 3
 # fib 4;;
 - : int = 5
 # fib 5;;
 - : int = 8
 # fib 6;;
 - : int = 13