一个数字的阶乘是所有从1到该数字的整数的乘积。阶乘只能为正整数定义。
负数的阶乘不存在。而0的阶乘是1。
例如,
正数 n 的阶乘,例如 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 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: 4 Factorial of 4 = 24
在此程序中,我们从用户那里获取一个正整数,并使用 for
循环计算阶乘。如果用户输入的数字是负数,我们会打印一条错误消息。
我们将阶乘变量的类型声明为 long
,因为一个数字的阶乘可能非常大。
当用户输入一个正整数(例如 4)时,将执行 for
循环并计算阶乘。 i 的初始值为 1
。
程序运行直到语句 i <= n
变为 false
。这会在屏幕上打印 Factorial of 4 = 24。以下是当 n = 4
时程序如何执行。
i <= 4 | fact *= i |
---|---|
1 <= 4 | fact = 1 * 1 = 1 |
2 <= 4 | fact = 1 * 2 = 2 |
3 <= 4 | fact = 2 * 3 = 6 |
4 <= 4 | fact = 6 * 4 = 24 |
5 <= 4 | 循环终止。 |
注意:此程序只能计算到 20 的阶乘。超过此范围,程序将无法计算阶乘,因为结果超出了 factorial 变量的容量。
另请阅读