Fibonacci
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
|
Man kan visa att antalet anrop faktiskt växer snabbare än själva Fibonaccitalen!
(För N=40 är Fibonaccitalet ca hundra miljoner men antalet rekursiva anrop är över 300 miljoner.)
Bättre vore här att använda en for-slinga:
def fib(n):
f0 = 0
f1 = 1
for i in range(n-1):
f2 = f1 + f0
f0 = f1
f1 = f2
return f1
|
Den här implementationen går i linjär tid, O(n).