成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

Java實(shí)現(xiàn)多種階乘算法及其應(yīng)用

什么是階乘?階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760 – 1826)于1808年發(fā)明的運(yùn)算符號(hào)。階乘,也是數(shù)學(xué)里的一種術(shù)語,通常表示為n!,其中n是一個(gè)非

什么是階乘?

階乘(factorial)是基斯頓·卡曼(Christian Kramp, 1760 – 1826)于1808年發(fā)明的運(yùn)算符號(hào)。階乘,也是數(shù)學(xué)里的一種術(shù)語,通常表示為n!,其中n是一個(gè)非負(fù)整數(shù)。

使用Java實(shí)現(xiàn)多種階乘算法

在Java中,我們可以利用不同的算法來計(jì)算階乘。下面我們介紹幾種常見的實(shí)現(xiàn)方式。

簡(jiǎn)單的循環(huán)算法

首先,在eclipse中新建一個(gè)Java項(xiàng)目,然后創(chuàng)建一個(gè)名為TextFactorial的類。通過簡(jiǎn)單的循環(huán)方法可以計(jì)算階乘,代碼如下:

```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;

}

```

遞歸算法

另一種方法是利用遞歸來計(jì)算階乘,代碼如下所示:

```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ù)組添加的方式進(jìn)行階乘計(jì)算也是一種常見的算法,可以使用以下代碼實(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類實(shí)現(xiàn)大數(shù)階乘

對(duì)于大數(shù)階乘的計(jì)算,可以使用BigInteger類來處理。下面是一個(gè)利用BigInteger類計(jì)算階乘的示例:

```java

public static synchronized BigInteger bigNumber(int num) {

ArrayList list new ArrayList<>();

((1));

for (int i (); i < num; i ) {

BigInteger lastFact (i - 1);

BigInteger nextFact ((i));

(nextFact);

}

return (num);

}

```

實(shí)際應(yīng)用與運(yùn)行結(jié)果

在Java程序的主入口處,我們可以調(diào)用上述不同的階乘算法并輸出結(jié)果。例如,可以這樣調(diào)用各個(gè)方法來計(jì)算5的階乘和23的階乘,并輸出結(jié)果。

```java

public static void main(String[] args) {

int num 5;

int num1 23;

("簡(jiǎn)單的循環(huán)計(jì)算" num "的階乘為" simpleCircle(num));

("利用遞歸計(jì)算" num "的階乘為" recursion(num));

("數(shù)組添加計(jì)算" num "的階乘為" addArray(num));

("利用BigInteger類計(jì)算" num1 "的階乘為" bigNumber(num1));

}

```

通過以上實(shí)現(xiàn),我們可以靈活選擇不同的算法來計(jì)算階乘,以滿足不同場(chǎng)景下的需求,從而更好地應(yīng)用于實(shí)際開發(fā)中。

標(biāo)簽: