递归调用——汉诺塔问题

穿精又带淫゛_ 提交于 2020-01-11 15:54:59

递归问题一直是我没弄懂的问题,就是不明白递归在调用函数的时候实现过程是怎么一回事,递归函数在调用的过程中代码的执行顺序是怎样的,看到有博主做了一个很形象的解释:说从前有座山,山里有座庙,庙里有个老和尚,老和尚在讲故事,故事是说从前有座山,山里有座庙,庙里有个老和尚,老和尚在讲故事,故事是说从前有座山,山里有座庙,庙里有个老和尚,老和尚在讲故事。。。。。。对,就是这种反复循环我不懂;
现就汉诺塔问题根据输出样例来大致了解一下这个题里递归函数是怎么执行的;
在这里插入图片描述
输入输出样例

在这里插入图片描述
首先得了解汉诺塔问题的三个核心步骤:

1.将初始位置A上面的n-1个盘子借助目标位置C移动到中间位置B暂时存放;
2.将初始位置A最下面的大盘子直接移动到目标位置C;
3.将中间位置B存放的n-1个盘子借助初始位置A移动到目标位置C。

代码实现
在这里插入图片描述
本题重点分析代码实现过程中递归调用的执行顺序和过程

以n=3为例(途中所标红色序号为输出顺序)
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!