Discuss / Python / 卡在这里整整一天,总结了一下送给后边学习的朋友作参考,希望可以为你节省些时间,有像我一样非要弄清楚代码具体运行步骤的可以看一看

卡在这里整整一天,总结了一下送给后边学习的朋友作参考,希望可以为你节省些时间,有像我一样非要弄清楚代码具体运行步骤的可以看一看

Topic source

老哥讲的很详细,我对有些递归很费解

我理解的大致的运行步骤和输出大家可以参考一下 move(3, 'A', 'B', 'C') move(2, a, c, b) move(1, a, b, c) a->c a->b move(1, c, a, b) c->b a->c move(2, b, a, c) move(1, b, c, a) b->a b->c move(1, a, b, c) a->c

恕我愚钝哈,还是没太看明白 执行 ‘行5’, 第一次递归开始,((n-1), a, c, b)回到函数最初代入(3, a='A', b='B', c='C'),得出参数为(2, 'A', 'C', 'B'),【!注意: 此时‘行1 ’(3, a='A', b='B', c='C')在 ‘行5’ 递归回到函数最初运行后已改变为(2, a='A', b='C', c='B')】 执行 ‘行2 - 3’ ,n != 1 , ‘行2 - 3’ 越过 执行else: 执行 ‘行5’,将((n-1), a, c, b)代入(2, a='A', b='C', c='B'),得出参数为(1, 'A', 'B', 'C') ,继续执行 ‘行2 - 3’,n == 1 返回输出:(a, "->", c)代入(1, 'A', 'B', 'C') ,即 A -> C *既然已经运行到n==1了,后面这个行5又是怎么开始的呢?* 回到 ’ 行5‘,继续执行 ‘行6’ ,将(a, "->", c)代入move函数(2, a='A', b='C', c='B')并输出,即A -> B

请问代码解析这里: 第四步 执行 ’行7‘ move((n-1), b, a, c): 执行 ‘ 行7’ ,第二次递归开始,((n-1), b, a, c)代入(3, a='A', b='B', c='C')

为什么n值又为3了呢?

其实具体怎么运行的用C++写一遍,看运行栈就行了。自己整理一遍太麻烦了。

看明白一部分,擦

Leoyuuuuuu

#18 Created at ... [Delete] [Delete and Lock User]

说实话没有节省时间,想了一下午... 看了分析 突然感觉不懂 我觉得其中最重要的是return ! (return 跳出) move(3,abc) - move(2,acb) -move(1,abc) returnP(ac) Print(ab) move(1,cab) returnP(c,b) move(2,bac) move(1,bca) return P(ba) print(bc) move(1,abc) returnP(ac) over~

宋忠义_

#19 Created at ... [Delete] [Delete and Lock User]

想不通我当时怎么会写了这么多,妈的搞得这么麻烦,自己回头复习都费劲


  • 1
  • 2

Reply