我有两个函数fib1并fib2计算Fibonacci.
def fib1(n):
if n < 2:
return 1
else:
return fib1(n-1) + fib1(n-2)
def fib2(n):
def fib2h(s, c, n):
if n < 1:
return s
else:
return fib2h(c, s + c, n-1)
return fib2h(1, 1, n)
Run Code Online (Sandbox Code Playgroud)
fib2工作正常,直到它炸毁递归限制.如果理解正确,Python不会针对尾递归进行优化.我很好.
什么让我fib1开始减速甚至停止,即使非常小的值n.为什么会这样?为什么它在缓慢之前没有达到递归限制?