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).