3.C++经典实例-计算一个数的阶乘

阶乘(factorial)是‌基斯顿·卡曼于1808年发明的运算符号,用于表示一个正整数n的所有小于及等于该数的正整数的积。自然数n的阶乘写作n!。例如,5的阶乘表示为5! = 1 × 2 × 3 × 4 × 5 = 120。

阶乘在数学和计算机科学中有广泛的应用。例如,在‌组合数学中,阶乘用于计算排列和组合的数量。此外,计算机科学中也有使用阶乘进行计算的算法。

例如20的阶乘的结果为:2432902008176640000,已经非常大,如果是再大数的阶乘已经无法大到无法写出他的完整形式。

使用递归法实现一个阶乘:

#include <iostream>
//计算阶乘
unsigned long long factorial_recursive(long n) {
    if (n == 0) return 1; // 基本情况
    return n * factorial_recursive(n - 1); // 递归调用
}

int main() {
    int number;
    std::cout << "输入一个正整数: ";
    std::cin >> number;
    std::cout << "结果=" << factorial_recursive(number) << std::endl;
    return 0;
}

例如20的阶乘结果为:

如果我们输入90,就已经计算不出结果了:

除了使用递归也可以使用迭代方式来实现:

#include <iostream>

unsigned long long factorial_iterative(int n) {
    unsigned long long result = 1;
    for (int i = 1; i <= n; ++i) {
        result *= i;
    }
    return result;
}

int main() {
    int number;
    std::cout << "输入一个正整数: ";
    std::cin >> number;
    std::cout << "结果为=" << factorial_iterative(number) << std::endl;
    return 0;
}

输入20,计算阶乘的结果为:

看到结果是一样的,所以使用哪种方式是一样的,如果要计算再大的话,就需要用到第三方的库了,否则将无法显示大数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值