跳到主要内容

C++ 编写使用递归计算数字阶乘的程序

为了理解这个示例,你应该掌握以下 C++ 编程 主题的知识:

这个程序从用户那里获取一个正整数,并计算该数字的阶乘。假设用户输入 6,则:

阶乘将等于 1*2*3*4*5*6 = 720

在这个示例中,你将学习如何使用递归函数来找到一个数的阶乘。

访问此页面了解,如何使用循环计算阶乘

示例:使用递归计算阶乘

#include<iostream>
using namespace std;

int factorial(int n);

int main() {

int n;

cout << "输入一个正整数:";
cin >> n;

cout << "阶乘 " << n << " = " << factorial(n);

return 0;
}

int factorial(int n) {
if(n > 1)
return n * factorial(n - 1);
else
return 1;
}

输出

输入一个正整数:6
阶乘 6 = 720

在上面的程序中,假设用户输入数字 6。这个数字被传递给 factorial() 函数。

在这个函数中,6 被乘以(6 - 1 = 5)的阶乘。为此,数字 5 再次传递给 factorial() 函数。

同样,在下一次迭代中,5 被乘以(5 - 1 = 4)的阶乘。并且,4 被传递给 factorial() 函数。

这一过程持续进行,直到值达到 1 并且函数返回 1

现在,每个函数返回其值以计算 1 * 2 * 3 * 4 * 5 * 6 = 720,这个值被返回给 main() 函数。

注意:这个程序对于大于 12 的数字不适用。这是因为这些数字的阶乘非常大,因此超出了 int 类型可以存储的值的范围。

你可以使用 unsigned long 作为 factorial() 函数的返回类型,但它仍然不足以计算大多数数字的阶乘。