汉诺塔程序报错
各路大神好,请教一下,我用的是Python 3.10.0版本,写了汉诺塔递归程序,不知道怎么出错了def hanoi(n,x,y,z):
if n == 1:
print(x,'-->',y)
else:
hanoi(n-1,x,z,y)#将前n-1个盘子从x移动到y上
print(x,'-->',z) #将最底下的最后一个盘子从x移动到z上
hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
n = int(input("请输入汉诺塔的层数:"))
hanoi(n,'x','y','z')
报错:SyntaxError: invalid syntax 本帖最后由 jhq999 于 2021-11-1 10:36 编辑
没毛病!你不会全复制后直接按回车吧?
Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> def hanoi(n,x,y,z):
if n == 1:
print(x,'-->',y)
else:
hanoi(n-1,x,z,y)#将前n-1个盘子从x移动到y上
print(x,'-->',z) #将最底下的最后一个盘子从x移动到z上
hanoi(n-1,y,x,z)#将y上的n-1个盘子移动到z上
>>> n = int(input("请输入汉诺塔的层数:"))
请输入汉诺塔的层数:3
>>> hanoi(n,'x','y','z')
x --> y
x --> y
z --> x
x --> z
y --> z
y --> z
x --> y
>>> 你是在IDLE的交互模式下运行的
不能跨行输入代码,一行一行输入
或者你在IDLE的文本模式下运行
ctrl+N 之后F5运行 你这移动顺序有问题,每次开头会多打一行,目前看不出有什么语法错误,程序能正常运行,结果不一定正确,
执行结果如下:请输入汉诺塔的层数:3
x --> y
x --> y
z --> x
x --> z
y --> z
y --> z
x --> y
>>>
我的是3.9 版本的,可以运行,但是第3行写错了吧
if n == 1:
print(x,'-->',z)
逃兵 发表于 2021-11-1 10:35
你是在IDLE的交互模式下运行的
不能跨行输入代码,一行一行输入
或者你在IDLE的文本模式下运行
谢谢,就是要在文本模式下运行,交互模式下运行会出错{:5_109:} jhq999 发表于 2021-11-1 10:34
没毛病!你不会全复制后直接按回车吧?
谢谢{:5_91:} luck78 发表于 2021-11-1 10:39
我的是3.9 版本的,可以运行,但是第3行写错了吧
代码没有错哦 myqf123 发表于 2021-11-1 10:36
你这移动顺序有问题,每次开头会多打一行,目前看不出有什么语法错误,程序能正常运行,结果不一定正确,
...
谢谢哦,程序没错,就是需要在文本模式下运行 点点蘑菇 发表于 2021-11-1 15:19
代码没有错哦
请输入汉诺塔的层数:3
x --> y
x --> y
z --> x
x --> z
y --> z
y --> z
x --> y
按照你的代码运行就是这样的
第一步和第二步是一样的, 按规则长的要在短的下面,你这个是没法移动的
页:
[1]