计算阶乘的 C++ 程序
正整数 n 的阶乘等于 123*…n。在此示例中,您将学习使用 C++ 中的 for 循环计算数字的阶乘。
要理解此示例,您应该具备以下 C++ 编程 主题的知识:
一个数的阶乘是从 1 到该数的所有整数的乘积。阶乘只能为正整数定义。
负数的阶乘不存在。并且 0 的阶乘是 1。
例如,
正数的阶乘 n,比如说 5
,5
的阶乘由 5!
表示,并通过一下公式计算得出:
5! = 1 * 2 * 3 * 4 * 5 = 120
因此,阶乘的数学逻辑是:
n! = 1 * 2 * 3 * ... * n
n! = 1 if n = 0 or n = 1
在下面的这个程序中,要求用户输入一个正整数。然后计算该数字的阶乘并显示在屏幕上。
示例:查找给定数字的阶乘
#include <iostream>
using namespace std;
int main() {
int n;
long double factorial = 1.0;
cout << "Enter a positive integer: ";
cin >> n;
if (n < 0)
cout << "Error! Factorial of a negative number doesn't exist.";
else {
for(int i = 1; i <= n; ++i) {
factorial *= i;
}
cout << "Factorial of " << n << " = " << factorial;
}
return 0;
}
输出
Enter a positive integer: 12
Factorial of 12 = 479001600
在这个程序中,我们从用户那里取一个正整数并使用 for
循环计算阶乘。如果用户输入负数,我们会打印一条错误消息。
我们将阶乘变量的类型声明为 long double
因为数字的阶乘可能非常大。
当用户输入一个正整数(比如 4
)时, for
将执行循环并计算阶乘。 i
的值最初是 1
。
程序运行直到语句 i <= n
变为 false
。下是程序在 n = 4
时的执行方式。
i <= 4 |
factorial *= i |
---|---|
1 <= 4 | factorial = 1 * 1 = 1 |
2 <= 4 | factorial = 1 * 2 = 2 |
3 <= 4 | factorial = 2 * 3 = 6 |
4 <= 4 | factorial = 6 * 4 = 24 |
5 <= 4 |
该程序可以计算最到整数 1754
的阶乘。因为更大的数字的阶乘的结果超出了变量 factorial
的范围。