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

C --> B C-->A 这步

C --> B  C-->A是怎么来的明明没有move(n-1,c,b,a) 为什么能得到C-->


正在回答

5 回答

楼主,我解决了。

def move(n,a,b,c):#为了解释,我叫a为位置1,b为位置2,c为位置3
if n == 1:
print a,'-->',c
return
move(n-1,a,c,b)#这一句实现了整个过程中的全部2,3位置互换
print a,'-->'c
move(n-1,b,a,c)#这一句实现了整个过程中的全部1,2位置互换
move(4,'A','B','C')#所以总的来看,C是可以实现先和B互换再跟A互换的

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

慕粉2014408783 提问者

加油(ง •̀_•́)ง
2017-01-04 回复 有任何疑惑可以回复我~
#2

神爱鬻 回复 慕粉2014408783 提问者

干巴爹(ง •_•)ง
2017-01-07 回复 有任何疑惑可以回复我~

楼主不妨这样理解:递归实现的过程中“源柱,过度柱,目标柱”是改变的。

    

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

同问,楼主解决了吗?

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

这是应为具有递归关系,你想想,通过上面的代码,b的位置可以到最后的时候移动到a的位置上,而中间的函数move(n-1,a,c,b),此时c的位置相当于之前b的位置,那么在其函数内部递归时,可以像之前b一样走到a的位置上,就形成了C-->

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

慕粉2014408783 提问者

额 意思是函数递归时自动形成的?不过怎么自动形成呢?或者说 b变动位置是因为我在函数中声明了 可是我没有声明c变为源柱(a:源柱,b:过度柱,c:目标柱),它怎么移动位置的呢?
2016-12-02 回复 有任何疑惑可以回复我~
#2

xiyangwugang 回复 慕粉2014408783 提问者

对于这个问题是用递归的思想来简化了操作,move(n,a,b,c)函数中的四个变量,n为移动的数量,a,b,c的含义是把a上的物体全部移动到c上,就相当于将第二个参数移动到第四个参数。move(n-1,a,c,b)与move(n-1,b,a,c)的调用就产生了C --> B C-->A
2016-12-02 回复 有任何疑惑可以回复我~
#3

慕粉2014408783 提问者 回复 xiyangwugang

谢谢 不过可以写一下 C-->A 或者C-->B的具体过程么?只有这里想不明白
2016-12-02 回复 有任何疑惑可以回复我~

能上代码看看?

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

慕粉2014408783 提问者

跟参考答案一样的 def move(n,a,b,c): if n == 1: print a,'-->',c return move(n-1,a,c,b) print a,'-->'c move(n-1,b,a,c) move(4,'A','B','C') 不知道C——>是怎么实现的 编程思路明白
2016-12-02 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

C --> B C-->A 这步

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