每日一练No.5

【Java中的递归】

使用循环方法和递归方法求阶乘。

【源代码】

 1 package javaexamples;
 2 
 3 public class ForCycle
 4 {
 5     public static int circleFactorial(int n){//利用循环的方式求阶乘
 6         int sum = 1;
 7         if(n<0){//判断参数n是否为负数
 8             throw new IllegalArgumentException("必须为正整数!");//抛出不合理参数异常
 9         }
10         for(int i=1;i<=n;i++){//执行n次循环操作
11             sum*=i;//每循环一次进行乘法运算
12         }
13         return sum;//返回阶乘的值
14     }
15     public static int recursiveFactorial(int n){//利用递归算法求阶乘
16         int sum=1;
17         if(n<0)
18             throw new IllegalArgumentException("必须为正整数!");//抛出不合理参数异常
19         if(n==1){
20             return 1;//如果n=1则跳出循环
21         }else{
22             sum=n*recursiveFactorial(n-1);//运用递归计算
23             return sum;
24         }
25     }
26     public static void main(String[] args){
27         int n=5;
28         System.out.println("利用循环的方式求"+n+"的阶乘"+
29         "\n其结果为:"//调用circleFactorial
30         +circleFactorial(n)+"\n");
31         System.out.println("利用递归算法求"+n+"的阶乘"+
32         "\n其结果为:"//调用recursiveFactorial
33         +recursiveFactorial(n));
34     }
35 }

【运行结果】

利用循环的方式求5的阶乘

其结果为:120

利用递归算法求5的阶乘

其结果为:120

【关键技术解析】

1、递归方法主要处理好入口和出口,入口是最初始的外部对方法调用,出口是对于继续递归的限制条件,内容是对整个过程中单个步骤的一般化抽象。

2、使用抛出异常的语句。

3、两个方法都是静态的,若非静态,需要在main()中创建一个类的对象,用该对象调用方法。

【心得】

好久没写代码,最近比较忙,比较忙,比较忙……

这个例子很容易,米有啥难点,有点饿,(⊙o⊙)嗯嗯……

原文地址:https://www.cnblogs.com/mengqiqi/p/2693885.html