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

我不明白有三个盘子的时候

http://img1.sycdn.imooc.com//59892b5a000164a303450245.jpg

这上面是代码,第一个地方和第二个地方的输出我做了标记。

我在草稿纸上推算,的确是第一个盘子要从A移动到C上。但是我不明白这个代码,第一输出为什么会是“A ##--> C”

因为我的理解是当执行“move(3, 'A', 'B', 'C')”这行代码时

n=3,所以if条件不成立,就会向下执行“move(n-1,a,c,b)”这行代码,进入递归,

这个时候n=2,if条件还是不成立,所以还会向下执行“move(n-1,a,c,b)”这行代码,再次进入递归,

这时n=1了,执行if语句,可是这个地方“move(n-1,a,c,b)”这行代码的形参顺序时变化了的,

if语句里面“print a,'##-->',c”这个c的值不应该时B吗?

但是为什么第一行输出的却是“A ##--> C”

(我知道它本身是应该这样的,但是我不理解这个代码为什么会这样输出,我的理解肯定有问题,谢谢各位大神指教)

http://img1.sycdn.imooc.com//59892b5b0001e67a02470235.jpg


正在回答

3 回答

n=3 abc n=2 acb n=3abc,是这样吗

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

你好,我想问一下,为什么只有ABC三个盘,但是N等于4?

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

宾丶高

额,我懂了,看错了【笑哭】
2017-08-12 回复 有任何疑惑可以回复我~

我弄到VS里面去执行了下,看了下具体过程,终于搞清楚了。。

n   a   b   c

3   A   B   C

2   A   C   B

1   A   B   C

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

举报

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

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

进入课程

我不明白有三个盘子的时候

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