您的位置:首页 > 编程语言 > Python开发

简短意赅的用思维导图理解python递归实现汉诺塔

2020-03-05 02:24 239 查看
def hanoi(n,x,y,z):
if n == 1:
print(x ,'-->' ,z )
else:
hanoi(n-1 ,x ,z ,y )
print(x ,'------>' , z)
hanoi(n-1 ,y ,x ,z )
n = int(input('请输入汉诺塔的层数:'))
hanoi(n, 'x','y','z')

理解
每一步的意图想必都可以理解,主要问题在于不知道怎么就出来了一系列的操作步骤,观看众多大佬的解释,折腾了一中午后的我画思维导图终于理解它每一步到底是怎么来的了!!!

其中h3(x,y,z)代表的就是原代码中的hanoi(3,x,y,z),后面的h1,h2,h3都是这样
个人纠结懵逼半天总结:
其实就是函数的执行过程,一个接着一个弄完,然后就是函数里面又有函数,比如思维导图里面分岔里面又进行了分岔
再然后就是hanoi里面的x,y,z的几次的变化,虽然字母几次调换了顺序,但是他们最后输出的其实是和变量的位置相关。这样就好理解了。
里面分别用–>和---->来表示两次print输出的不同

最后3层的汉诺塔就是从上到下的顺序,依次是:
x–>z
x---->y
z–>y
x---->z
y–>x
y---->z
x–>z

第一次,请多多指教呀!

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
S_tephen 发布了3 篇原创文章 · 获赞 2 · 访问量 49 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: