正在回答 回答被采纳积分+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; }
祝学习愉快~
相似问题
登录后可查看更多问答,登录/注册
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星