递归满足两个条件
(1)有反复执行的过程(调用自身)
(2)有跳出反复执行过程的条件(递归出口)有递归出口
1、阶乘(求整数n的阶乘,例如5的阶乘是1 * 2 * 3 * 4 * 5)
int factorial(int n){
int sum = 0;
if (n > 1) sum = n * factorial(n-1);
return sum;
}
2、九九乘法表
void multiplicationTable(int i) {
if (i == 1) {
System.out.println("1*1=1 ");
} else {
m(i - 1);
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + j * i + " ");
}
System.out.println();
}
}
3、求相加和(求整数n的相加,例如5的阶乘是1+2+3+4+5)
int doSum(int n ) {
if(n == 0) return n;
return n + doSum(n-1);
}
4、逆转字符
String recursion ( String input ){
if (input.isEmpty ()) return input;
return recursion (input.substring (1)) + input.charAt (0);
}
5、斐波那契数列的第几列
int fibonacci(int n) {
if(n==0)
return 0;
if( n == 1 || n == 2) return 1; // 递归结束的条件,求前两项
else return Fibonacci(n-1)+Fibonacci(n-2);
// 如果是求其它项,先要求出它前面两项,然后做和
}
6、河内塔
void hanio(int n,char a,char b,char c){
if(n==1) System.out.println("移动"+n+"号盘子从"+a+"到"+c);
else{
hanio(n-1,a,c,b);//把上面n-1个盘子从a借助b搬到c
System.out.println("移动"+n+"号盘子从"+a+"到"+c);
//紧接直接把n搬动c
hanio(n-1,b,a,c);//再把b上的n-1个盘子助a搬到c
}
}