发布网友 发布时间:2022-04-23 14:46
共3个回答
热心网友 时间:2022-04-06 08:36
这是汉诺塔问题!
n---盘子的数量
a,b,c---三根柱子
你自己可以演示一下,3个盘子的很简单.
Python程序使用的是递归.解释起来有点麻烦.请问楼主现在计算机是什么水平,让我知道从何说起.
热心网友 时间:2022-04-06 09:54
我来翻译一下,相当于下面m方法的实现
热心网友 时间:2022-04-06 11:29
1、把不是最下面的盘子都经过C移到B
2、把最下面的移动到C
3、把移动到B的盘子都经过A移动到C
def move(n,a,b,c):
if n == 1:
print(a,'-->',c) #递归结束条件
else:
move(n-1,a,c,b) #<span style="color:rgb(102,102,102);font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;font-size:14px;line-height:20px;white-space:pre-wrap;">将n-1块移动至b</span>
move(1,a,b,c) #<span style="color:rgb(102,102,102);font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:20px;white-space:pre-wrap;">将最大那块移动至c</span>
move(n-1,b,a,c) #<span style="color:rgb(102,102,102);font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:20px;white-space:pre-wrap;">从n-1块开始,ab参数位置对调 </span>
n = int(input('请输入第一个柱子A的盘子数量:'))
print('n=%d时的移动路线:'%n)
move(n,'A','B','C')