java 递归
1 递归概念
- 以编程的角度来看,递归指的是方法定义中调用方法本身的现象
- 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
- 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算
2 递归的基本使用
package com.fcarey.recursion;
public class RecursionDemo {
public static void main(String[] args) {
int num = 100;
System.out.println(getSum(num));
}
private static int getSum(int i) {
// 方法的作用: 求 1- i 之间和
if (i == 1) {
return 1;
} else {
return i + getSum(i - 1);
}
}
}
- 递归一定要有出口。否则内存溢出
- 递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出
3 示例: 递归求阶乘
package com.fcarey.recursion;
public class RecursionDemo2 {
public static void main(String[] args) {
int num = 5;
System.out.println(factorial(num));
}
private static int factorial(int i) {
// 定义一个方法,用于递归求阶乘,参数为一个int类型的变量
if (i == 1) {
return 1;
} else {
return i * factorial(i - 1);
}
}
}