标签:14 递归 局部变量 问题 算法 num testRecursion 搞懂 Day
一文搞懂递归调用
递归是什么
递归做为一种算法在程序设计语言中广泛应用。但是如果没终止条件会造成死循环,所以递归代码里要有结束自调自的条件。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
简单递归示例代码
public class RecursionTest {
private void testRecursion(int num){
if (num > 9){
testRecursion(num / 10);
}
System.out.println(num % 10);
}
public static void main(String[] args) {
new RecursionTest().testRecursion(123);
}
}
得到的结果
1
2
3
递归调用图解分析
不知道栈和栈帧的可以参考此文章(https://blog.csdn.net/asd1358355022/article/details/119192321),栈是内存结构中的部分结构的组成部分
局部变量表作用
栈帧中的局部变量表是一组变量值的存储地址,用于存放方法参数和方法内部定义的局部变量。如上图所示我们的方法入参就在局部变量表中存放。
递归可以解决的问题
-
把一个大问题拆解成一些小问题治之,小问题之间互不影响(栈帧隔离,互不干扰执行自己栈帧的流程)
-
各种数学问题,如8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子问题(google编程大赛)
-
各种算法也会使用到递归,比如快排,归并排序,二分查找,分治算法等。
-
各种算法也会使用到递归,比如快排,归并排序,二分查找,分治算法等。
标签:14,递归,局部变量,问题,算法,num,testRecursion,搞懂,Day 来源: https://blog.csdn.net/asd1358355022/article/details/119257340
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。