正在回答 回答被采纳积分+1
1回答
好帮手慕小蓝
2023-02-09 17:15:42
同学你好,递归调用是指在方法的内部调用其自身的过程,本质与一般的方法调用没有区别。一般的方法调用是在a方法中调用b方法,而递归是在a方法中调用a方法。
递归调用的原理是将复杂的问题拆解为具有相同特性的简单问题,然后逐级调用,直到终止为止。例如下面的案例:
假设现在需要一个计算n的阶乘的方法,如果不使用循环而是递归,则需要这样去实现:
计算n的阶乘需要知道(n-1)的阶乘,用这个结果去乘以n即可;
计算(n-1)的阶乘需要知道(n-2)的阶乘,用这个结果去乘以(n-1)即可;
...
最终可以推导至
计算3的阶乘需要知道2的阶乘,用这个结果去乘以3即可;
计算2的阶乘需要知道1的阶乘,用这个结果去乘以2即可,而1的阶乘是已知的,就是1。
然后将上面的过程反向实现,就是递归,代码如下:
//计算n的阶乘
public long factorial(int n){
//2.最终可知1的阶乘就是1,直接返回1即可
if (n == 1) return 1;
//1.需要知道n-1的阶乘的值,然后乘以n即可
long result = n * factorial(n-1);
return result;
}祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星