Java實現(xiàn)多種階乘算法及其應用
什么是階乘?階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760 – 1826)于1808年發(fā)明的運算符號。階乘,也是數(shù)學里的一種術語,通常表示為n!,其中n是一個非
什么是階乘?
階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760 – 1826)于1808年發(fā)明的運算符號。階乘,也是數(shù)學里的一種術語,通常表示為n!,其中n是一個非負整數(shù)。
使用Java實現(xiàn)多種階乘算法
在Java中,我們可以利用不同的算法來計算階乘。下面我們介紹幾種常見的實現(xiàn)方式。
簡單的循環(huán)算法
首先,在eclipse中新建一個Java項目,然后創(chuàng)建一個名為TextFactorial的類。通過簡單的循環(huán)方法可以計算階乘,代碼如下:
```java
public static int simpleCircle(int num) {
int sum 1;
if(num < 0) {
throw new IllegalArgumentException("必須為正整數(shù)!");
}
for(int i 1; i < num; i ) {
sum * i;
}
return sum;
}
```
遞歸算法
另一種方法是利用遞歸來計算階乘,代碼如下所示:
```java
public static int recursion(int num) {
int sum 1;
if(num < 0) {
throw new IllegalArgumentException("必須為正整數(shù)!");
}
if(num 1) {
return 1;
} else {
sum num * recursion(num - 1);
return sum;
}
}
```
數(shù)組添加算法
通過數(shù)組添加的方式進行階乘計算也是一種常見的算法,可以使用以下代碼實現(xiàn):
```java
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("必須為正整數(shù)!");
}
while(last < num) {
arr[last 1] arr[last] * (last 1);
last ;
}
return arr[num];
}
```
利用BigInteger類實現(xiàn)大數(shù)階乘
對于大數(shù)階乘的計算,可以使用BigInteger類來處理。下面是一個利用BigInteger類計算階乘的示例:
```java
public static synchronized BigInteger bigNumber(int num) {
ArrayList
((1));
for (int i (); i < num; i ) {
BigInteger lastFact (i - 1);
BigInteger nextFact ((i));
(nextFact);
}
return (num);
}
```
實際應用與運行結果
在Java程序的主入口處,我們可以調用上述不同的階乘算法并輸出結果。例如,可以這樣調用各個方法來計算5的階乘和23的階乘,并輸出結果。
```java
public static void main(String[] args) {
int num 5;
int num1 23;
("簡單的循環(huán)計算" num "的階乘為" simpleCircle(num));
("利用遞歸計算" num "的階乘為" recursion(num));
("數(shù)組添加計算" num "的階乘為" addArray(num));
("利用BigInteger類計算" num1 "的階乘為" bigNumber(num1));
}
```
通過以上實現(xiàn),我們可以靈活選擇不同的算法來計算階乘,以滿足不同場景下的需求,從而更好地應用于實際開發(fā)中。