打印河内塔的解决方案

时间:2013-05-10 23:31:59

标签: python python-2.7

这是一段以递归方式解决河内塔问题的代码:

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))

它工作正常但是在打印完所有动作后,它也打印出“无”,我不知道为什么。

提前致谢

2 个答案:

答案 0 :(得分:4)

而非print(Towers(n,fr,to,spare))执行Towers(n,fr,to,spare)

没有打印,因为Towers没有返回任何内容。

答案 1 :(得分:1)

在Python中,每个函数都返回一些东西。如果您没有明确return任何内容,则默认情况下,您的函数会返回None

在您的代码中,Towers的返回值为None,因此当您将其传递到print语句时,最终会打印None