【发布时间】:2021-09-03 23:19:16
【问题描述】:
我无法理解它是如何工作的。为什么输出有第一行,其中 var X == 1 ?
而且,如果 new_var 没有在任何地方定义为整数,编译器如何不给出错误?
是因为调用堆栈是这样工作的吗?它从最后一次调用返回,所以返回 1 后,new_val 变为 == 1 ?!
输出:
我在这!!!! X 是:1
我在这!!!! X 为:2,new_var 为 1
我在这!!!! X 为:3,new_var 为 2
我在这!!!! X 为:4,new_var 为 6
24
def fact_rec(x):
if x > 0:
if x == 1:
print(f"I'm here!!!! X is: {x}")
return 1
else:
new_var = fact_rec(x-1)
print(f"I'm here!!!! X is: {x}, and new_var is {new_var}")
return new_var*x
else:
return "It's negative"
print(fact_rec(4))
【问题讨论】:
-
只是一个旁注,如果用户输入零怎么办?
-
零不是负数
标签: python-3.x recursion