我有两个函数fib1
来fib2
计算斐波那契。
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)
fib2
工作正常,直到它破坏递归限制。如果理解正确,Python 不会针对尾递归进行优化。这对我来说很好。
让我感到惊讶fib1
的是,即使n
. 为什么会这样?为什么它在变得迟缓之前没有达到递归限制?