递归
1.自己调用自己
2.要有一个趋近终止的条件
优缺点:代码量少,可读性差
例如:
求一个数的阶乘
public static long fac(int n){
/*Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();*/
if(n == 1){
return 1;
}
return n * fac(n-1);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
System.out.println(fac(a));
}
求斐波那契数
public static int fib(int i){
if(i == 1 || i == 2){
return 1;
}
return fib(i-1)+fib(i-2);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println(fib(i));
}
}
当一些问题使用递归和非递归(循环),都可以解决,那么此时更推荐使用循环,相比递归,非递归程序更加高效。