0

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

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

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

提前致谢

4

2 回答 2

4

而不是print(Towers(n,fr,to,spare))Towers(n,fr,to,spare)

没有打印,因为Towers没有返回任何东西。

于 2013-05-10T23:37:45.153 回答
1

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

在您的代码中,的返回值TowersNone,所以当您将它传递到您的print语句中时,您最终会打印None

于 2013-05-10T23:34:17.660 回答