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

当输入3时

这个代码中输入3个盘子时 ,程序的结果是A->C  A->B  C->B  A->C  B->A  B->C  A->C    ,而正确的结果不是应该是A->B  A->C  B->A  B->C  A->C 吗?  还是说程序运行的结果也是另一种方法?拜托同学们帮我看看  谢谢

正在回答

3 回答

你的结果不对, 第四步的时候,B上已经没盘子了。

这有个游戏,你可以试一下。

http://www.3454.com/91990p

附带我的代码注释,(我附加计算了不同盘子需要移动的步数):

https://img1.sycdn.imooc.com//5b2cbfd60001728404890479.jpg


# _*_ coding:utf-8 _*_

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

    #如果a只有一个圆盘,可以直接移动到c

    if n ==1:

        print a, '-->', c

        return 1


    num=move(n-1, a, c, b) # (N-1) 个圆盘移动到 b

    

    num=num+1

    print a, '-->', c  #将a的最后一个圆盘移动到c

 

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

    return num+num2

    

print move(4, 'A', 'B', 'C')




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

qq_专苎_0 提问者

非常感谢!
2018-07-27 回复 有任何疑惑可以回复我~

程序运行的结果没有错,你提供的结果有待商榷:每次只能移动一个盘子,B本来没有盘子,按你的说法,第一步:从A中取最小的盘子给B。第二步:取第二小的盘子给C。第三步:把B中最小的盘子给回A。第四步就有问题了,这时候B没有盘子了,何来B给C盘子呢? 

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

额 懂了 是我没把规则搞懂

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

举报

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

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

进入课程

当输入3时

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