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与递归调用事实(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);
}