Le ème nombre de Fibonacci peut être calculé en temps linéaire en utilisant la récurrence suivante:
def fib(n):
i, j = 1, 1
for k in {1...n-1}:
i, j = j, i+j
return i
Le ème nombre de Fibonacci peut également être calculé comme [ φ n / √. Cependant, cela a des problèmes avec les problèmes d'arrondi pour mêmenrelativement petit. Il y a probablement desmoyens de contourner cela,mais je préfère ne pas le faire.
Existe-t-il un algorithme efficace (logarithmique dans la valeur ou mieux) pour calculer le n ème nombre de Fibonacci qui ne repose pas sur l'arithmétique à virgule flottante? Supposons que les opérations entières ( + , - , × , / ) peuvent être effectuées en temps constant.