Python 了解河内塔楼的巨蟒
我理解如何使用Python递归解决Hanoi问题,但我不理解如何编写这种Python语言:Python 了解河内塔楼的巨蟒,python,recursion,towers-of-hanoi,Python,Recursion,Towers Of Hanoi,我理解如何使用Python递归解决Hanoi问题,但我不理解如何编写这种Python语言: 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) hanoi(2,'SRC','TMP','TAG') 如果第一步是把(x-1)盘子从源代码放
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)
hanoi(2,'SRC','TMP','TAG')
如果第一步是把(x-1)盘子从源代码放到tmp,为什么我们要写河内(n-1,z,y)?为什么我们要换z和y
谢谢 您对变量的理解是错误的:
是磁盘数n
是第一个极点x
是用于传输的磁极y
是传输磁盘目标的极点z
- 如果只有一个磁盘要移动,我们就完成了(也就是
位)n==1
- 否则,我们必须使用临时磁极(
)将磁盘从源磁极(y
)移动到最终磁极(x
)z
z
(也称hanoi(n-1,x,z,y)
)将n-1
磁盘从x
移动到y
,然后将最后一个磁盘移动到z
,然后将所有剩余磁盘(位于y
上)移动到z
(最后一极)上,使用hanoi-1,y,x,z)
下面是一个gif来说明:
您对变量的理解是错误的:
是磁盘数n
是第一个极点x
是用于传输的磁极y
是传输磁盘目标的极点z
- 如果只有一个磁盘要移动,我们就完成了(也就是
位)n==1
- 否则,我们必须使用临时磁极(
)将磁盘从源磁极(y
)移动到最终磁极(x
)z
z
(也称hanoi(n-1,x,z,y)
)将n-1
磁盘从x
移动到y
,然后将最后一个磁盘移动到z
,然后将所有剩余磁盘(位于y
上)移动到z
(最后一极)上,使用hanoi-1,y,x,z)
下面是一个gif来说明:
谢谢您的解释!对不起,我有点笨。关于这一个“使用z(又名hanoi(n-1,x,z,y)),将n-1个磁盘从x移动到y”。当我们写n-1,x,z,y时。Python如何知道我们的意思是使用z将x移动到y?这是编程的一个美妙之处:语言本身并不“知道”任何东西。我们设计的算法接受输入并产生输出,这取决于我们(程序员/用户)对其应用任何意义。我们决定hanoi(n-1,x,z,y)表示使用z而不是Python将n-1个磁盘从x移动到y。谢谢您的解释!对不起,我有点笨。关于这一个“使用z(又名hanoi(n-1,x,z,y)),将n-1个磁盘从x移动到y”。当我们写n-1,x,z,y时。Python如何知道我们的意思是使用z将x移动到y?这是编程的一个美妙之处:语言本身并不“知道”任何东西。我们设计的算法接受输入并产生输出,这取决于我们(程序员/用户)对其应用任何意义。我们决定hanoi(n-1,x,z,y)将表示使用z(而不是Python)将n-1个磁盘从x移动到y。