为什么下面的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))
答案 0 :(得分:6)
当您致电p(z(100))
时,您会传递z(100)
作为参数。这意味着z
在p
开始之前运行完成。 z
“静默地”进行所有递归(因为它本身不会打印任何内容),并且所有p
看到的都是最后返回的1
。
如果要打印每个递归,则需要在正在递归的函数中包含打印。
答案 1 :(得分:1)
你的lambda唯一可以返回的值是一个。