递归算法python版
递归算法是一种函数调用自身来解决问题的方法。其核心思想是“将大问题分解为小问题”,直到遇到最基本的情况(也叫“基线条件”),再逐步回溯解决整个问题。
【递归基本结构】
一个递归函数一般包括两个部分:
基线条件(终止条件):避免无限递归,定义什么时候停止。
递归调用:函数调用自身,解决规模更小的子问题。
【示例题目:1加到10】
目标是计算1 + 2 + 3 + ... + 10的和。
可以将这个问题看作:
【递归代码示例(Python)】
调用recursive_sum(10),结果就是55。
【递归调用过程可视化】
递归调用会一直“向下”直到到达基线条件(n == 1),然后从1开始“向上”返回并逐步累加。
【注意事项】
必须设置终止条件,否则会造成无限递归,导致栈溢出。
每一次函数调用都会占用内存,因此递归效率一般不如循环。
适合用于:
分治问题(如归并排序、快速排序)
树形结构遍历(如二叉树)
数学问题(如斐波那契数列、阶乘)
【等效的循环写法】
这段代码与递归版本功能一样,但效率更高,不占用调用栈空间。
要完整描述从recursive_sum(10)递归调用到回溯的全过程,下面从递归调用和回溯返回两个阶段,逐步展开:
一、递归阶段(调用阶段)
这是从n=10不断调用自身,直到满足终止条件n == 1:
此时遇到基线条件:
二、回溯阶段(逐层返回)
从recursive_sum(1)返回,依次把结果带回到上一个函数调用中:
最终结果是55
三、完整调用和回溯堆栈视图(栈的形式)
每次调用会进入“调用栈”中,最后一个最先返回:
四、关键点总结
每一层函数都等待下一层的返回结果;
返回时,按调用的反顺序向上层回溯计算;
每个返回值是当前数字加上下一层返回值;
最终汇总成完整的结果。
野牛程序员教少儿编程与信息学奥赛
宜宾市野牛网络科技有限公司专业微信小程序开发、网站建设、软件开发等
领取专属 10元无门槛券
私享最新 技术干货