递归是什么?
递归顾名思义就是一层递一层,在java里我觉得比较清晰的回答就是,自己调用自己来完成某种算法,通常我只要在java里看到一个方法调用自己那么我会下意识的认为这个是使用了递归来完成的算法,递归的语法也很简单如:
public static void Test(){
Test();
}
方法自己调用自己是递归的话那他有什么优点呢?首先使用递归可以使代码更加的简单虽然说递归能解决的问题循环都能解决,但是如果是一些比较简单的问题使用递归会更加的方便,减少代码量,
但是递归却有一个致命的问题,java是采用栈机制的,因此我们没在递归里循环调用一次则会生成出来一个栈但这样会对电脑要求很苛刻,所以常常会存在内存溢出的问题,导致使用递归虽然方便,但是却不能使用去解决很复杂的问题.
示例
使用递归求阶乘:
class Test{
public static void main(String[] args) {
System.out.println(test(10));
}
//求阶乘的方法
public static int test(int a){
if (a==1){
return 1;
}
return a*test(a-1);
}
}