A°604 2023-10-24 20:02 采纳率: 0%
浏览 4
已结题

阶乘的求和(初学者真的不会,指导一下我吧)

img


感觉没什么错,出来的数一直是268040729
,和正确答案不一样,但是不知道错哪了,初学者真的寸步难行

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-25 20:59
    关注

    【以下回答由 GPT 生成】

    首先,根据您提供的代码,可以看出您计算阶乘的函数(factorial)的实现是正确的。但是问题出在了整数类型的范围上。由于阶乘的结果很快增长并且超过了int类型的表示范围,导致产生了错误的结果。

    为了解决这个问题,您可以考虑使用更大的数据类型来表示阶乘的结果。C++中,可以使用long long或者unsigned long long来表示更大范围的整数。

    下面是修改后的代码:

    #include<iostream>
    #include<cmath>
    using namespace std:
    
    unsigned long long factorial(int n) {
        unsigned long long m = 1;  // 使用unsigned long long类型
        int i = 1;
        while (i <= n) {
            m = m * i;
            i++;
        }
        return m;
    }
    
    int main() {
        unsigned long long sum = 0;  // 使用unsigned long long类型
        for (int i = 1; i <= 20; i++) {
            sum = sum + factorial(i);
        }
        cout << "1! + 2! + ... + 20! = " << sum << endl;
        return 0;
    }
    

    您可以尝试运行修改后的代码,这样应该能够得到正确的结果。

    希望能够帮到您!如果还有其他问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月9日
  • 创建了问题 10月24日