Skip to content
Snippets Groups Projects
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)