值不变的递归lambda?

时间:2015-08-18 19:03:04

标签: python lambda

为什么下面的lambda递归只打印1? 从它的'它应该减去1。价值和印刷价值。

def p(t):
    print(t)
    while t:
        print(t)
z = lambda x:1 if x == 0 else z(x-1)
p(z(100))

2 个答案:

答案 0 :(得分:6)

当您致电p(z(100))时,您会传递z(100)作为参数。这意味着zp开始之前运行完成。 z“静默地”进行所有递归(因为它本身不会打印任何内容),并且所有p看到的都是最后返回的1

如果要打印每个递归,则需要在正在递归的函数中包含打印。

答案 1 :(得分:1)

你的lambda唯一可以返回的值是一个。