我正在处理代码战中的一个问题,希望你记住斐波那契数列。到目前为止,我的解决方案是:
def fibonacci(n):
return fibonacci_helper(n, dict())
def fibonacci_helper(n, fib_nums):
if n in [0, 1]:
return fib_nums.setdefault(n, n)
fib1 = fib_nums.setdefault(n - 1, fibonacci_helper(n - 1, fib_nums))
fib2 = fib_nums.setdefault(n - 2, fibonacci_helper(n - 2, fib_nums))
return fib_nums.setdefault(n, fib1 + fib2)
它适用于较小的 n 值,但在超过 30 标记时显着减慢,这让我想知道——这个解决方案甚至被记忆了吗?对于较大的 n 值,我如何才能使这种类型的解决方案足够快地工作?