我注意到在我的机器上,以下内容达到了 n = 2960 的最大递归深度:
m = {0:0, 1:1}
def f(n):
if n not in m:
m[n] = f(n - 1) + f(n - 2)
return m[n]
Run Code Online (Sandbox Code Playgroud)
而这个版本达到 n = 988 时:
m = {0:0, 1:1}
def f(n):
if n not in m:
m[n] = sum(f(n - i) for i in [1, 2])
return m[n]
Run Code Online (Sandbox Code Playgroud)
谁能解释一下“幕后”发生了什么来解释这种差异?
更准确地说,如果能够理解为什么此示例中的因子为 3,并能够导出它以使用更多项进行求和,那就太好了。