|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本人新手一枚,学到递归,做到小甲鱼课后练习题时有个疑惑,感谢大佬答疑。
比如用递归解决阶乘问题,如下代码:
def factor(n):
if n == 1:
return 1
else:
return factor(n-1)*n
num = int(input("Please input an number: "))
print (factor(num))
解决汉诺塔问题如下代码:
def hanoi(n, x, y, z):
if n == 1:
print (x, " --> ", z)
else:
hanoi (n-1, x, z, y)
print (x, " --> ", z)
hanoi (n-1, y, x, z)
num = int (input ("Numbers: "))
hanoi(num, "X", "Y", "Z")
我的问题是,为什么在阶乘问题的代码中,少了return,就无法执行。而在汉诺塔问题中,却不能加return (如果第一个 hanoi (n-1, x, z, y)变成 return hanoi (n-1, x, z, y)),结果就是错的。
阶乘问题中 需要返回值进行计算,如果没有返回值就无法进行递归计算;
汉诺塔只是个纯递归问题,如果第一个 hanoi (n-1, x, z, y)变成 return hanoi (n-1, x, z, y),则后面两行代码
print (x, " --> ", z)
hanoi (n-1, y, x, z)
会直接跳过
|
|