标签:实现 asc 变量 scheme 递归函数 strong span lan sch
def recsum(x):
if x == 1:
return x
else:
return x + recsum(x - 1)
recsum(5)
5 + recsum(4)
5 + (4 + recsum(3))
5 + (4 + (3 + recsum(2)))
5 + (4 + (3 + (2 + recsum(1))))
5 + (4 + (3 + (2 + 1)))
5 + (4 + (3 + 3))
5 + (4 + 6)
5 + 10
15
for i in range(6):
sum += i
def tailrecsum(x, running_total=0):
if x == 0:
return running_total
else:
return tailrecsum(x - 1, running_total + x)
tailrecsum(5, 0)
tailrecsum(4, 5)
tailrecsum(3, 9)
tailrecsum(2, 12)
tailrecsum(1, 14)
tailrecsum(0, 15)
15
return tailrec(x+1);
return tailrec(x+1) + x;
则不可以。因为无法更新tailrec()函数内的实际变量,只是新建一个栈。
但Python不能尾递归优化(Java不行,C可以,我不知道为什么),这里是用它做个例子。
====================================
标签:实现 asc 变量 scheme 递归函数 strong span lan sch
原文地址:http://www.cnblogs.com/shixisheng/p/7291035.html