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

请问move(4, 'A', 'B', 'C')结果为什么有CA,CB?

请问move(4, 'A', 'B', 'C')结果不是:AC    AB    BC    AB    BC    AB    BC   吗?

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

    if n == 1:    

        print a,'-->',c    

        return    

    move(n-1, a,b, c)    

    print a, '-->', b    

    print b, '-->', c    


正在回答

3 回答

会提出这个问题应该是没理解清楚原理,先来分析这个场景,三个柱子,每一步的目标都是借助第三根柱子,来达到把最底下那块在两根柱子间转移的效果。一开始我们需要从a->c,所以需要把剩下的3片移到b柱上(步骤1),这时,对于a柱上的剩下3片来说,就是需要借助c柱移动到b柱上(步骤2),那么,对于再上面的两片来说,又是借助b柱移动到c柱上(步骤3),所以一开始是ab,ac,bc(步骤3),然后ab,此时第三片到b柱上了,又要把c柱上的两片移到b柱上,所以是ca,cb,ab(步骤2),之后也都是这个套路。

所以这个递归的原理就是,移4片到c,需要借助移3片到b,而移3片到b,就要借助移2片到c,以此类推

首先,算法里的abc都是不一定的,要看每一步的目标是什么

所以算法的第一步是move(n-1,a,c,b)  意思是把a上的n-1片移到相对的b上,这样a才能移到c上

第二部是把最后一片移到c上,所以是 a -> c  

最后一步就是把b柱上的移到c上,所以是move(n-1,b,a,c)

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

那给的答案是错的咯

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

A --> C
A --> B
B --> C
A --> B
B --> C
A --> B
B --> C

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

举报

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

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

进入课程

请问move(4, 'A', 'B', 'C')结果为什么有CA,CB?

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