C++ 程序使用递归来计算数字阶乘


非负整数 n 的阶乘是对于小于或等于 n 的所有正整数的乘积。

例如:7 的阶乘为 5040。

7! = 7 * 6 * 5 * 4 * 3 * 2 *1
7! = 5040

让我们看看如何使用递归来计算数字的阶乘。

示例

 在线演示

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

输出

Factorial of 5 is 120
Factorial of 3 is 6
Factorial of 7 is 5040

在以上程序中,函数 fact() 是一个递归函数。main() 函数使用要计算其阶乘的数字调用 fact()。以下代码片段说明了这一点。

cout<<"Factorial of 5 is "<<fact(5)<<endl;
cout<<"Factorial of 3 is "<<fact(3)<<endl;
cout<<"Factorial of 7 is "<<fact(7)<<endl;

如果该数字为 0 或 1,则 fact() 返回 1。如果该数字是任何其他数字,则 fact() 使用值 n-1 递归调用自身。fact() 除了递归调用自身外,还将 n 与递归调用 fact(n-1) 相乘。这产生了以下结果。

n*(n-1)*(n-2)....3*2*1 or the factorial of n

以下代码片段说明了这一点。

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

更新于:2020-6-24

1K+ 视图

开启你的职业生涯

通过完成课程获得认证

开始
广告