我们都知道 n!=123.......(n-1)n; 并且当 n=0 或 n=1 时 n!=1, 所以从公式可以将计算条件分为 2 部分:
- (n==0||n==1) ,n!=1
- (n>1) ,n!=(n-1)!*n
代码实现如下:
- public class Practice0514{
- public static long factorial1(int n){// 递归计算 n 的阶乘
- if(n==0||n==1){
- return 1;
- }
- else{
- return factorial1(n-1)*n;
- }
- }
- public static long factorial2(int n){// 非递归计算 n 的阶乘
- long ret=1;
- int i=0;
- for(i=1;i<=n;i++){
- ret=ret*i;
- }
- return ret;
- }
- public static void main(String args[]){
- int n=18;//n 从这里指定
- System.out.printf("%d 的阶乘为 %d%n",n,factorial1(n));
- System.out.printf("%d 的阶乘为 %d%n",n,factorial2(n));
- }
- }
结果如图所示:
来源: http://www.bubuko.com/infodetail-3062801.html