C++程式求階乘


非負整數n的階乘是所有小於或等於n的正整數的乘積。

例如:5的階乘是120。

5! = 5 * 4 * 3 * 2 *1
5! = 120

可以使用遞迴程式或非遞迴程式來求整數的階乘。下面分別給出這兩個程式的示例。

使用非遞迴程式求階乘

可以使用for迴圈來求一個數的階乘。這可以使用下面的程式演示:

示例

 線上演示

#include <iostream>
using namespace std;
int main() {
   int n = 5, fact = 1, i;
   for(i=1; i<=n; i++)
   fact = fact * i;
   cout<<"Factorial of "<<n<<" is "<<fact;
   return 0;
}

輸出

Factorial of 5 is 120

在上面的程式中,for迴圈從1執行到n。對於迴圈的每次迭代,fact都乘以i。fact的最終值是從1到n的所有數字的乘積。這可以使用下面的程式碼片段演示。

for(i=1; i<=n; i++)
fact = fact * i;

使用遞迴程式求階乘

下面的程式演示了使用遞迴程式求一個數的階乘。

示例

 線上演示

#include <iostream>
using namespace std;
int fact(int n) {
   if ((n==0)||(n==1))
   return 1;
   else
   return n*fact(n-1);
}
int main() {
   int n = 5;
   cout<<"Factorial of "<<n<<" is "<<fact(n);
   return 0;
}

輸出

Factorial of 5 is 120

在上面的程式中,函式fact()是一個遞迴函式。main()函式使用需要求階乘的數字呼叫fact()。這由下面的程式碼片段演示。

cout<<"Factorial of "<<n<<" is "<<fact(n);

如果數字是0或1,則fact()返回1。如果數字是其他任何數字,則fact()遞迴地呼叫自身,值是n-1。

這可以使用下面的程式碼片段演示:

int fact(int n) {
   if ((n==0)||(n==1))
   return 1;
   else
   return n*fact(n-1);
}

更新於:2020年6月24日

22K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.