为了账号安全,请及时绑定邮箱和手机立即绑定

汉诺塔这个任务不会做呢,答案也看不懂求解答

汉诺塔这个任务不会做呢,答案也看不懂求解答

正在回答

3 回答

建议你先下载一个坦诺塔游戏体验一下就明白这个逻辑了。如果有三个柱子,a柱子,b柱子,c柱子,a柱子上挂着n个盘子。盘子从上到下是由小到大罗列着的,且小的必须在大的上面。

def move(n, a, b, c)  #def 定义该函数move

    if n == 1  #如果柱子上只有一个盘子

    print(a,'-->',c)  #直接输出 a --> c即可,只有一个盘子,直接从a移动到b即可。这也是最终目的,就是把a柱子上的盘子全部移动到c柱子上。

    move(n-1,a, c, b)#共有n个盘子,先将n-1个盘子从a柱子移动到b柱子上。

    move(1, a, b, c) #将最后一个柱子从a柱子移动到c柱子上。

    move(n-1,b, a, c) #再将刚才移动到b柱子上的n-1个盘子移动到c柱子上。

可以自己代入下2个或者3个自行整理下逻辑就好了。


3 回复 有任何疑惑可以回复我~

def move(n, a, b, c):

    if n ==1:                     #只有一个,直接把a的圆盘换到c

        print a, '-->', c      #这样输出的意思就是a 移动到 c

        return

 #n>1时

    move(n-1, a, c, b)    #根据题意首先需要把 (N-1) 个圆盘从a移动到 b。然后,将 a的最后一个圆盘移动到c(n==1即最后一个)这里因为递归调用了本函数,所以会循环执行下去直到遇到n==1,执行上面三行代码

    print a, '-->', c   #打印步骤

    move(n-1, b, a, c) #再将b的(N-1)个圆盘移动到c。



0 回复 有任何疑惑可以回复我~

尴尬了,我也看得不是很明白

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758620    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

汉诺塔这个任务不会做呢,答案也看不懂求解答

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信