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.