let fib = function n -> let f_0 = ref(0) and f_1 = ref(1) and temp = ref(0) in begin for i = 1 to n do temp := !f_0; f_0 := !f_1; f_1 := !temp + !f_1 done; !f_0 end ;; |
let fib = let rec f_r = function | 0 -> (0, 1) | n -> let (f_0,f_1) = f_r(n - 1) in (f_1, f_0 + f_1) in fun n -> fst(f_r n) ;;Comment rendre terminal l'appel f_r(n - 1) |