阶乘的计算java_java中四种阶乘的计算
package com.zf.s2;//創建一個包
import java.math.BigInteger;//導入類
import java.util.ArrayList;
import java.util.List;
public class TextFactorial {//操作計算階乘的類
public static int simpleCircle(int num){//簡單的循環計算的階乘
int sum=1;
if(num<0){//判斷傳入數是否為負數
throw new IllegalArgumentException("必須為正整數!");//拋出不合理參數異常
}
for(int i=1;i<=num;i++){//循環num
sum *= i;//每循環一次進行乘法運算
}
return sum;//返回階乘的值
}
public static int recursion(int num){//利用遞歸計算階乘
int sum=1;
if(num < 0)
throw new IllegalArgumentException("必須為正整數!");//拋出不合理參數異常
if(num==1){
return 1;//根據條件,跳出循環
}else{
sum=num * recursion(num-1);//運用遞歸計算
return sum;
}
}
public static long addArray(int num){//數組添加計算階乘
long[]arr=new long[21];//創建數組
arr[0]=1;
int last=0;
if(num>=arr.length){
throw new IllegalArgumentException("傳入的值太大");//拋出傳入的數太大異常
}
if(num < 0)
throw new IllegalArgumentException("必須為正整數!");//拋出不合理參數異常
while(last
arr[last+1]=arr[last]*(last+1);//進行運算
last++;//last先進行運算,再將last的值加1
}
return arr[num];
}
public static synchronized BigInteger bigNumber(int num){//利用BigInteger類計算階乘
ArrayList list = new ArrayList();//創建集合數組
list.add(BigInteger.valueOf(1));//往數組里添加一個數值
for (int i = list.size(); i <= num; i++) {
BigInteger lastfact = (BigInteger) list.get(i - 1);//獲得第一個元素
BigInteger nextfact = lastfact.multiply(BigInteger.valueOf(i));//獲得下一個數組
list.add(nextfact);
}
return (BigInteger) list.get(num);//返回數組中的下標為num的值
}
public static void main(String []args){//java程序的主入口處
int num=5;
int num1=23;
System.out.println("簡單的循環計算"+num+"的階乘為"//調用simpleCircle
+simpleCircle(num));
System.out.println("利用遞歸計算"+num+"的階乘為"//調用recursion
+recursion(num));
System.out.println("數組添加計算"+num+"的階乘為"//調用addArray
+addArray(num));
System.out.println("利用BigInteger類計算"+num1+"的階乘為"//調用bigNumber
+bigNumber(num1));
}
}
總結
以上是生活随笔為你收集整理的阶乘的计算java_java中四种阶乘的计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 链表的基本操作 java_Java-实现
- 下一篇: java构造顺序_Java构造顺序