Till KTH:s startsida Till KTH:s startsida

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