首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

递归算法python版

递归算法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

三、完整调用和回溯堆栈视图(栈的形式)

每次调用会进入“调用栈”中,最后一个最先返回:

四、关键点总结

每一层函数都等待下一层的返回结果

返回时,按调用的反顺序向上层回溯计算

每个返回值是当前数字加上下一层返回值;

最终汇总成完整的结果。

野牛程序员教少儿编程与信息学奥赛

宜宾市野牛网络科技有限公司专业微信小程序开发、网站建设、软件开发等

  • 发表于:
  • 原文链接https://page.om.qq.com/page/ONOm1rM-RwLd9qqCiLTQlTtw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券