递归调用——汉诺塔问题

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_45302622/article/details/103933643