跳到主要内容

C++ 编程:寻找阶乘

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

一个数字的阶乘是从 1 直到该数字的所有整数的乘积。阶乘只能为正整数定义。

负数的阶乘不存在。而 0 的阶乘是 1

例如,

一个正数 n(如 5)的阶乘用 5! 表示,计算方式为:

5! = 1 * 2 * 3 * 4 * 5 = 120

因此,阶乘的数学逻辑是:

n! = 1 * 2 * 3 * ... * n
n! = 1 如果 n = 0 或 n = 1

在这个程序中,用户被要求输入一个正整数。然后计算该数字的阶乘并在屏幕上显示。

示例:找到给定数字的阶乘

#include <iostream>
using namespace std;

int main() {
int n;
long factorial = 1.0;

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

if (n < 0)
cout << "错误!负数的阶乘不存在。";
else {
for(int i = 1; i <= n; ++i) {
factorial *= i;
}
cout << n << " 的阶乘 = " << factorial;
}

return 0;
}

输出

输入一个正整数:4
4 的阶乘 = 24

在这个程序中,我们从用户那里获取一个正整数,并使用 for 循环计算阶乘。如果用户输入负数,程序将打印错误信息。

由于数字的阶乘可能非常大,我们将阶乘变量的类型声明为 long

当用户输入一个正整数(比如 4)时,for 循环执行并计算阶乘。i 的初始值为 1

程序运行直到 i <= n 成为 false。这将在屏幕上打印 4 的阶乘 = 24。以下是当 n = 4 时程序的执行方式:

i <= 4fact *= i
1 <= 4fact = 1 * 1 = 1
2 <= 4fact = 1 * 2 = 2
3 <= 4fact = 2 * 3 = 6
4 <= 4fact = 6 * 4 = 24
5 <= 4循环终止。

注意: 这个程序只能计算到数字 20 的阶乘。超过这个数字,程序将无法计算阶乘,因为结果超出了 factorial 变量的容量。