阶乘的案例非常的小所以更好理解。
代码语言:javascript复制package Action;
public class test {
public static void main(String[] args) {
//计算10的阶乘
//这次由于只要最终结果,故而直接调用输出即可
//无论多少次循环, 最终值有一个返回值
System.out.println(f(10));;
}
public static long f(int n) {
if (n == 1) { // 递归终止条件
return 1; // 由于是递归,故而1的时候就结束了
}
return n * f(n - 1); // 相同重复逻辑,缩小问题的规模
}
}
输出数据
3628800
正确。
那么换个方法测试一下:
代码语言:javascript复制package Action;
public class test {
public static void main(String[] args) {
int sum=1;//从1开始计算,如果是0那就结束了
//循环10次,不能从0开始,所以i<=10
for (int i = 1; i <= 10; i ) {
sum*=i;//累计就行了
}
System.out.println(sum);
}
}
输出结果
3628800
二次校验,正确。
希望此案例能让大家更加加深一步对递归的理解。