📜  c++ 阶乘 - C++ (1)

📅  最后修改于: 2023-12-03 14:59:49.685000             🧑  作者: Mango

C++ 阶乘

阶乘是指自然数n与n-1,n-2,...,1的乘积,通常表示为n!,例如:5! = 5 x 4 x 3 x 2 x 1 = 120。

在C++中,我们可以用递归或循环的方式来实现阶乘运算。

1. 递归实现

递归是一种函数自身调用的方法。实现阶乘递归函数时,只需要考虑返回条件和递归调用问题。

int factorial(int n) {
    if (n == 0) { // 达到返回条件
        return 1;
    }
    else {
        return n * factorial(n - 1); // 递归调用本函数
    }
}
2. 循环实现

循环实现阶乘运算时,我们需要使用一个变量来保存计算结果,不断更新。

int factorial(int n) {
    int result = 1;
    for (int i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}
3. 大数阶乘计算

当需要计算大数阶乘时,我们需要使用高精度计算。建议使用字符串来存储数字,从高位到低位进行计算,最终输出结果。

string big_factorial(int n) {
    string result = "1"; // 初始化结果为1
    for (int i = 1; i <= n; i++) {
        int carry = 0; // 进位
        for (int j = result.size() - 1; j >= 0; j--) {
            int product = (result[j] - '0') * i + carry; // 乘积加进位
            result[j] = product % 10 + '0'; // 更新当前位
            carry = product / 10; // 更新进位
        }
        if (carry != 0) { // 最高位有进位,添加新位
            result = to_string(carry) + result;
        }
    }
    return result;
}

以上是C++实现阶乘函数的一些方法,可以根据实际需求来选择合适的方法。