这是一段以递归方式解决河内塔问题的代码:
def printMove(fr, to):
print('Move from tower ' + str(fr) + ' to tower ' + str(to))
def Towers(n, fr, to, spare):
if n == 1:
printMove(fr, to)
else:
Towers(n-1, fr, spare, to)
Towers(1, fr, to, spare)
Towers(n-1, spare, to, fr)
n=int(raw_input('Enter the initial number of disks: '))
fr=str(raw_input('Enter the number for the initial tower: '))
to=str(raw_input('Enter the number for the second tower: '))
spare=str(raw_input('Enter the number for the third tower: '))
print(Towers(n,fr,to,spare))
它工作正常但是在打印完所有动作后,它也打印出“无”,我不知道为什么。
提前致谢
答案 0 :(得分:4)
而非print(Towers(n,fr,to,spare))
执行Towers(n,fr,to,spare)
。
没有打印,因为Towers
没有返回任何内容。
答案 1 :(得分:1)
在Python中,每个函数都返回一些东西。如果您没有明确return
任何内容,则默认情况下,您的函数会返回None
。
在您的代码中,Towers
的返回值为None
,因此当您将其传递到print
语句时,最终会打印None
。