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

感觉自己逻辑思维能力不行啊 题目都搞不懂

看不懂看不懂

正在回答

8 回答

还有我

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

PHP陈 提问者

啊哈哈哈
2018-11-01 回复 有任何疑惑可以回复我~
#2

qq_慕虎1372899

由于递归一般只有等于1或者不等于1两种情况 1)当n = 1,是 print a + "-->" + c , move(1,a.b.c) 2) 当n = 2,"A -- > B"[move(n-1,a,c,b)],第二步"A -- C"[move(1,a,b,c)],第三步"B --> C"[move[n-1,b,a,c]]
2018-11-11 回复 有任何疑惑可以回复我~

就是第一根最下面的让上面的都走开,他要去第三根,然后上面的就自己想办法来回倒腾最后都上第二根上了,然后最下面那个就到了第三根,然后他又说你们刚才怎么下去的现在怎么上来,然后其他的就从第二个上面倒腾到第三根上。

move(n-1,a#起点,c#路过,b#终点) 

move(1,a,b,c)

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

      

0 回复 有任何疑惑可以回复我~
  1. 当n=1时,函数执行到return就截止,结果为a-->c,同时也得出move(1,x,y,z)的结果为x-->z(为了防止混淆,用另外三个字母代替变量)。

  2. 当n=2时,if条件不满足,则跳过if函数块,执行后面的语句,即move(1,a,c,b),根据move(1,x,y,z)的结果,这个地方会得到a-->b。紧接着执行print语句,得到a-->c。后面又执行move(1,b,a,c),根据move(1,x,y,z)的结果,这个地方会得到b-->c。

    因此,当n=2时,函数的执行结果为a-->b,a-->c,b-->c。通过这个结果我们也可以看出,move((2,x,y,z)的结果为x-->y,x-->z,y-->z.

    依次类推,当n=3时,我们在执行函数时就会遇到move(2,a,c,b),move(2,b,a,c)这个结果可以直接套用n=2时move(2,x,y,z)的结果为x-->y,x-->z,y-->z的结果。

  3. 综上,该函数是一个迭代函数,会层层套用前面的结果。当然,该函数也很好的体现了该游戏的规则,建议百度了解该游戏的具体内容。

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

看了答案都没法理解。。。

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

这个游戏是这样子的:

 A B C三个柱子 

A柱子上有几个圆盘 圆盘大小从上到下以此增大,最上面的圆盘最小,借助B柱子 把A柱子的所有圆盘还按照原先的顺序移动到C柱子上,且移动过程中小圆盘不能在大圆盘下面 只能在大圆盘上面。(一次只能移动一个圆盘)

假如只有一个圆盘,直接移到C

有两个圆盘,将A柱子最上面的一个移到B柱子,A剩下的一个圆盘移到C柱子,再将B柱子上最小的圆盘移到C柱子, 这样就和A柱子开始的顺序一样

有三个圆盘,将A柱子最上面的小圆盘移到C柱子,A柱子第二个圆盘移到B柱子,C柱子上一开始移动的圆盘再移到B柱子,这时B柱子上的顺序是两个较小圆盘,A柱子有一个最大的圆盘没动。接下来将A柱子上最大的圆盘移到C柱子上,这样底座就弄好了。B柱子上第一个圆盘移到A柱子,B剩下的第二个移到C柱子,这时,C柱子有两个圆盘,A柱子剩下最小的圆盘,B无圆盘,将A上最小的圆盘移到C柱子上。C柱子上三个圆盘的摆放顺序就和一开始一样了。

越多圆盘,步骤越多,必须按照大小顺序来移动,所以比较麻烦,https://img1.sycdn.imooc.com//5bf254960001afdc06000600.jpg

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

还有我

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

自问自答

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

111

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

举报

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

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

进入课程

感觉自己逻辑思维能力不行啊 题目都搞不懂

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