一般来说,Python、Java和C#是没有尾递归优化能力的。
用斐波那契数列举栗子
def Fib(n,b1=1,b2=1,c=3):
if n<3:
return 1
else:
if n==c:
return b1+b2
else:
return Fib(n,b1=b2,b2=b1+b2,c=c+1)
用这段程序测试一下,Fib(1001)
>>> Fib(1001)
70330367711422815821835254877183549770181269836358732742604905087154537118196933579742249494562611733487750449241765991088186363265450223647106012053374121273867339111198139373125598767690091902245245323403501L
如果我们用1002进行测试,会出现以下结果
>>> Fib(1002)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 8, in Fib
File "<stdin>", line 8,