p liczbę Fibonacciego można obliczyć w czasie liniowej stosując następujący nawrotu:
def fib(n):
i, j = 1, 1
for k in {1...n-1}:
i, j = j, i+j
return i
p liczbę Fibonacciego może być obliczana jako . Ma to jednak problemy z zaokrąglaniem nawet dla stosunkowo niewielkiej . Prawdopodobnie są na to sposoby, ale wolałbym tego nie robić.
Czy istnieje wydajny (logarytmiczny w wartości lub lepszej) algorytm do obliczania tej liczby Fibonacciego, który nie opiera się na arytmetyki zmiennoprzecinkowej? Załóżmy, że operacje na liczbach całkowitych ( , , , ) mogą być wykonywane w stałym czasie.n + - × /