为什么下面的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))
Run Code Online (Sandbox Code Playgroud)
当你打电话时p(z(100)),你z(100)作为参数传递.这意味着z在p开始之前运行完成. z它所有的复制都是"默默地"(因为它本身不会打印任何东西)并且所有p看到的都是在1最后返回的.
如果要打印每个递归,则需要在递归函数中包含打印.