递归

哪些问题可以用递归的方法来解决

 

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中,如果发现有值了就不再递归计算,直接取值

很多情况下,可以通过非递归程序实现递归的功能,避免递归导致的众多问题

posted on   yingchen  阅读(111)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· 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

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示