Python 中的 return 关键字是否将具有特定参数的函数的值保存在内存中?

Does return keyword in Python saves the value in memory for a function with an specific parameter?

我正在学习递归函数,我有一个疑问,比方说:

def fibonacci(n):
if n == 0 or n == 1:
    return 1

return fibonacci(n-1) + fibonacci(n-2)

fibonacci(4)
fibonacci(5)

当程序执行fibonacci(5)时,会是这样的:

fibonacci(5) = fibonacci(4) + fibonacci(3)

Python是否必须使用递归再次计算最后两个函数,或者它是否会将结果保存在内存中,因为它在执行时已经使用相同的参数执行了相同的函数fibonacci(4) 所以会立即给它们赋值吗?

首先,Python 中没有函数调用的自动缓存。如果您调用 fibonacci(6) 然后 fibonacci(5),Python 将再次调用所有相关函数,即使它是多余的。

您所说的(缓存等)称为 memoization 并且是称为动态规划的更大概念的基本原则。 DP 基本上是一种采用基本递归(如斐波那契实现)并通过应用某些技术(如缓存)使其更高效的方法

这是一个很好的网站,它很好地解释了这个概念,并且实际上以斐波那契数列为例。 What is Dynamic Programming