def fib(n): if n == 0 or n == 1: return n return fib(n-1) + fib(n-2) def fibHelper(n, a, b): if n == 0: return a elif n == 1: return b return fibHelper(n-1, b, a+b) def fibIterative(n): return fibHelper(n, 0, 1) def multiply(a,b): product = [0,0,0] product[0] = a[0]*b[0] + a[1]*b[1] product[1] = a[0]*b[1] + a[1]*b[2] product[2] = a[1]*b[1] + a[2]*b[2] return product def power(l, k): if k == 1: return l temp = power(l, k//2) if k%2 == 0: return multiply(temp, temp) else: return multiply(l, multiply(temp, temp)) def fibPower(n): l = [1,1,0] return power(l, n)[1] """ Makes sure that other programs don't execute the main """ if __name__ == '__main__': try: print(fib(30)) except KeyboardInterrupt: exit()