C++ 求阶乘程序

要理解本示例,您应该了解以下 C++ 编程 主题


一个数字的阶乘是所有从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 变量的容量。


另请阅读

在我们结束之前,让我们来检验一下你对这个例子的理解!你能解决下面的挑战吗?

挑战

编写一个函数来计算一个数字的阶乘。

  • 返回输入 num 的计算阶乘。
  • 非负整数 n 的阶乘是小于或等于 n 的所有正整数的乘积。它表示为 n!
  • 例如,如果 num = 5,则返回值应为 120
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战