阶乘的案例非常的小所以更好理解。
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
正确。
那么换个方法测试一下:
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
二次校验,正确。
希望此案例能让大家更加加深一步对递归的理解。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)