递归
哪些问题可以用递归的方法来解决
1、一个问题的解可以分解为几个子问题的解
2、这个问题与分解之后的子问题,除了数据规模不一样,求解思路完全一样
3、存在递归终止条件
写递归的代码的最重要一点是写出递归公式
递归的代码需要警惕堆栈的溢出的问题
因为堆栈有大小,当递归的规模非常大,调用层次很深,一直压入栈,就会出现栈溢出
如果避免堆栈溢出:
1、通过代码限制一定的递归次数
2、避免重复的计算
比如一个公式是f(n) = f(n-1) + f(n-2)
f(5)=f(4)+f(3)
f(4)=f(3)+f(2), f(3)=f(2)+f(1)
f(3)=f(2)+f(1)
这里在递归计算的时候,f(3)被重复计算了好几遍,可以将计算过的内容放入一个map中,如果发现有值了就不再递归计算,直接取值
很多情况下,可以通过非递归程序实现递归的功能,避免递归导致的众多问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY