发布网友 发布时间:2022-04-23 14:46
共3个回答
热心网友 时间:2022-04-06 08:36
这是汉诺塔问题!
n---盘子的数量
a,b,c---三根柱子
你自己可以演示一下,3个盘子的很简单.
Python程序使用的是递归.解释起来有点麻烦.请问楼主现在计算机是什么水平,让我知道从何说起.
热心网友 时间:2022-04-06 09:54
我来翻译一下,相当于下面m方法的实现
def my_print(args):
print args
def move(n, a, b, c):
my_print ((a, '-->', c)) if n==1 else (move(n-1,a,c,b) or move(1,a,b,c) or move(n-1,b,a,c))
move (3, 'a', 'b', 'c')
print"*************another way************"
def m(n,a,b,c):
if n==1:
my_print((a,'-->',c))
else:
move(n-1,a,c,b)
move(1,a,b,c)
move(n-1,b,a,c)
m(3,'a','b','c')
热心网友 时间: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')