def fib1(n, cache = {}):
if n <= 1:
return 1
if n not in cache:
cache[n] = fib1(n-1) + fib1(n-2)
return cache[n]
def fib2(n, cache = {}):
if n <= 1:
return 1
if n not in cache:
cache[n] = fib2(n-1, cache) + fib2(n-2, cache)
return cache[n]
Why does fib1 still work when I don't pass in cache as a parameter like I do in the second function fib2?