什么是递归算法?
递归算法就是A方法调用A方法,就是自己调用自己。
注意:一定要指明什么时候方法结束,不然会进入死循环,直至计算机资源被耗尽。
实例:计算10的阶乘。。。。。。
/**
* 递归算法测试
*/
public class RecursionTest {
public static void main(String[] args) {
int a = RecursionTest.factorial(5);
System.out.println(a);
}
public static int factorial(int i) {
int res;
if (i == 1) { // 这里定义当i=1时,不调用自己方法,否则会进入死循环.
return 1;
} else {
res = i * factorial(i - 1);
}
return res;
}
}
注意:一定要指明什么时候不调用自己。否则死循环。。。。。
结果:120
阶乘递归图解:
优缺点:
优点:
1.简洁
2.算法简单
缺点:
1.自己调用自己,每次都会分配内存来保存参数值。导致时间和内存消耗。从而降低效率。
2.内存大量使用可能会导致内存溢出风险。
总结:
1.递归算法就是方法自己调用自己
2.内存消耗较大,很少用递归。
3.一定要指明什么时候不调用自己。否则死循环。