递归的定义:
一个函数自己直接或间接调用自己。
我们只要把下面两个基本的问题搞明白就差不多理解了递归的含义。
递归满足三个条件:
1. 递归必须得有一个明确的终止条件
2. 该函数所处理的数据规模必须在递减
3. 这个转化必须是可解的
循环和递归
递归:
易于理解
速度慢
存储空间大
循环:
不易理解
速度快
存储空间小
/**
* 递归的复习与巩固
* @author qiu
* 定义:一个函数自己直接或间接调用自己。
*/
public class Recursion {
public static void main(String[] args) {
//求阶乘 n!的问题可以看成n*(n-1)!
int num= factorial(10);
System.out.println(num);
//求1+2+3....+n的和
int sum = factorial1(5);
System.out.println(sum);
}
public static int factorial(int N){ //递归函数
if(N==1||N==0) { //递归结束出口
return 1;
}
else if(N<0) { //递归结束出口
return -1;
}
else {
return N*factorial(N-1);
}
}
private static int factorial1(int N) {
if(N==1) { //递归结束出口
return 1;
}
return N+factorial1(N-1);
}
}