汉诺塔游戏的python实现——递归函数
-
漢諾塔游戲python實(shí)現(xiàn)
def move(n, a, b, c):
????if n == 1:
????????print('move', a, '-->', c)
????else:
????????move(n-1, a, c, b)
????????move(1, a, b, c)
????????move(n-1, b, a, c)
例如:
move(4, 'a', 'b', 'c')
? ? 執(zhí)行步驟:
?? ?? ? 1.先執(zhí)行move(4, 'a', 'b', 'c')
?? ??? ?其中move(4, 'a', 'b', 'c')包括?move(3,? 'a', 'c', 'b')
????????? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? move(1, 'a', 'b', 'c')
????????? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? ??move(3, 'b', 'a', 'c')
?? ?? ? 2.?然后執(zhí)行move(4, 'a', 'b', 'c')中的move(3,? 'a', 'c', 'b')
?? ?? ? 其中move(3,? 'a', 'c', 'b')?包括move(2, 'a', 'b', 'c')
????????? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? move(1, 'a', 'c', 'b')
????????? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? ??move(2, 'c', 'a', 'b')
?? ?? ? 3.然后依次執(zhí)行move(3,? 'a', 'c', 'b')?中的move(2, 'a', 'b', 'c')中的所有函數(shù),因?yàn)閚=1滿足了遞歸結(jié)束條件,至此move(2, 'a', 'b', 'c')?執(zhí)行完畢
?? ??? ?其中move(2, 'a', 'b', 'c') ?包括move(1, 'a', 'c', 'b')
????????? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? move(1, 'a', 'b', 'c')
????????? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ? ??move(1, 'b', 'a', 'c')
?? ?? 4.然后回到move(3,? 'a', 'c', 'b')執(zhí)行move(2, 'a', 'b', 'c')之后的代碼,至此move(3,? 'a', 'c', 'b')執(zhí)行完畢
?? ?? 5.最后回到move(4, 'a', 'b', 'c')執(zhí)行move(3, 'a', 'c', 'b') 之后的代碼,至此move(4, 'a', 'b', 'c') 執(zhí)行完畢?,整個(gè)漢諾塔游戲完成了
-
總結(jié)
?? ?? ? 遞歸函數(shù),層層遞歸的時(shí)候,先要一直算到遞歸條件結(jié)束,然后再一層一層的返回計(jì)算,就可以遞歸出結(jié)果了。
總結(jié)
以上是生活随笔為你收集整理的汉诺塔游戏的python实现——递归函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强化学习7——基于环境模型的RL方法
- 下一篇: 信息论2——单维连续信源