一个数的阶乘是从 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 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
。这会在屏幕上打印
4 = 24 的阶乘。下面是
n = 4
时程序的执行方式。
注意: 这个程序只能计算到 1754 或接近它的一些整数值的阶乘。除此之外,程序无法再计算阶乘,因为结果超出了阶乘变量的容量。