关于递归的理解
之前看了许多关于递归的理解,还是是懂非懂的,这个问题一直纠结在心里。
今天又碰到这个递归问题了,我认为一定要把问题分析清楚了,以后再遇到这样的问题或者类似问题才能轻车熟路,不然又要头疼或者成为问题的瓶颈了。
1)讲到递归,我觉得先从函数说起,递归首先是一个函数,具有函数的一切功能,即写一个递归要有函数的形式。比如 void function()。
2) 递归的定义,即递推和回归,即把一个大问题分成有限的小问题,并且通过这些小问题的解决,最后把大问题可以解决。
3)递归函数的格式,重要的是有个出口,即一个递归结束的条件,比如 if(btree->data=='#'),最后有个return 。
4)对递归的挖掘。递归实际是个栈的问题,而栈的特点是FILO,即先进后出。而每层栈保存了一个函数所具有的局部变量、函数返回地址,函数返回值等内容。这样当递归返回时,这层栈便被销毁,即这层栈的空间被释放,函数调用进入到上层中。
5)当递归结束时,便返回了调用该递归的地方处。
6)可以把递归看成一个算法,很多问题要用到递归,比如树。实际上算法的本质也是一个程序,这样当看到本质时,算法就没有那么吓人了。
7)递归也有缺点,比如耗时间和空间,就像人类虽然很强大也有自身的缺点一样,完美的存在只在于追求的过程和一颗平静的心。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述