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()
函数的返回类型,但它仍然不足以计算大多数数字的阶乘。