Question 2.py 542 B
# question 2
def fib(n):
# inefficient recursive fibonacci, counts down from "n" while each iteration spawns 2 recursive calls
if n == 0:
return 0
if n == 1:
return 1
else:
return fib(n - 1) + fib(n - 2)
def fast_fib(n, n_minus_2=0, n_minus_1=1):
# efficient recursive fibonacci, by going forward with each iteration spawning only 1 recursive call
if n == 0:
return 0
if n == 1:
return n_minus_1
else:
return fast_fib(n - 1, n_minus_1, n_minus_1 + n_minus_2)