Dyskusja:OCaml/Rekurencja i iteracje

Z Wikibooks, biblioteki wolnych podręczników.

Definicja f-cji Fibbonaciego jest zle zrobiona. Autor mowi, ze zwraca ona n-ta liczbe F. liczac od 0, ale

# fib 0;;
 
- : int = 1
 
# fib 1;;
 
- : int = 1
 
# fib 2;;
 
- : int = 1
 
# fib 3
 
  ;;
 
- : int = 2

Podana f-cja liczy tak naprawde od 1. Nie znam sie na wiki, nie bede probowac zmieniac artykulu bo go rozwale ;p, ale kod powinien byc:

let fib x = 
  	let rec loop a b i =
  		if i = 0 then a
  		else let next = a + b in loop b next( i - 1 )
  	in
  	loop 0 1 x;;