練習問題8.4

2008年2月5日
1 分

参照と繰り返しの構文(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