全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1950 1
2017-09-03
def move(n,a,b,c):
     if n==1:
         print(a,'-->',c)   #如果只有一个,可以直接移动了
else:

         move(n-1,a,c,b)   #先想方设法把最上面的n-1个盘子从a移动到b上 a='a',c='b',b='c'
move(1,a,b,c)     #可以移动最底下的盘子了
move(n-1,b,a,c)   #再想方设法把B上的盘子移到C上
move(3,'a','b','c')
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-9-3 21:03:49
最好是自己玩一次汉诺塔会比较有体验 或者画个草图,你可以先梳理一遍逻辑然后按照逻辑 写程序。主要是递归的思想,第一步先判断是否只有一个盘子,如果是,就直接输出移动路径,如果不是就进入到else里,这里分三步:1.你要想把最后一个盘子从a--->c,就得借助b,什么情况下能直接把最后一个盘子从a-->c,那就是只有一个盘子的时候,所以上面n-1个盘子都得移动到b上面去,根据汉诺塔的规则,大盘不能在小盘上,所以就得借助c盘,就是 move(n-1,a,c,b) 。2.第二步就简单了,把最后一个盘子从a-->c,你可以直接print(a,'--->'c),也可以用递归,move(1,a,b,c) 。3.第三步,把b上面的n-1个盘子,借助a移动到c上,和第一步差不多递归调用move(n-1,b,a,c)。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群