什么是递归
简单的说递归就是在一个方法中存在调用自己的情况。
递归分类
直接递归
方法中自己调用自己
function a(){
a();
}
间接递归
方法中调用的其他方法,其他方法又调用了自己
function a(){
b();
}
function b(){
a();
}
适用场景
每次调用同一方法,但是方法的参数不同
注意事项
- 一定要有退出条件,否则导致死循环,内存溢出
- 即使存在退出条件,循环也不能过多,否则导致内存溢出
- 构造方法禁止使用递归
案例
1.求和
如题:求1-n个数的和
public int sum(int n)
{
if(n == 1)
{
return 1;
}
return n + sum(n-1);
}
2.阶乘
public int factorial(int n)
{
if(n == 1)
{
return 1;
}
return n*factorial(n-1);
}