【问题标题】:Total number of values - sum值总数 - 总和
【发布时间】:2012-12-16 23:20:10
【问题描述】:

我需要编写一个程序“long int sum(int n)”,它将值的总数相加,如下所示:

1! − 2! + 3! − ... ± n!

我成功地写了以下的总和:

1-3 + 5 - ... ± (2n + 1)

float sum (int n) {
int max = 2*n +1, i = 1, sum = 0, ch = 2;

for (i = 1; i <= max; i+2; ){
    if ((ch%2) == 0){
        sum += i;
    }
    else{
        sum = sum - i;
    }
    ch++;
    return sum;
}

但我不知道/不知道如何获得阶乘总和。

【问题讨论】:

  • 创建一个阶乘函数并为每个 n 调用它
  • 您还需要将循环从 1 更改为 n,以 1 为步长运行

标签: sum factorial


【解决方案1】:

创建另一个执行阶乘的函数和一个执行交替级数之和的函数很有用。 . .

    int factorial(int n)
    {
        int sum = 1;
        if (n > 0)
            for (int i = n; i > 1; --i)
                sum *= i;
        else if (n <= 0)
            return 0;

        return sum;
    }

    int alernatingSeriesSum(int nStart)
    {
        if(nStart < 1) return 0;
        int sum = 0;
        for(int i=1; i<nStart; ++i)
            sum += (factorial(i) * ((i%2)==0 ? -1 : 1));  //multiply -1 if its an even #s
        return sum;
    }

阶乘非常简单,乘以值,减一并迭代直到达到 1。

交替序列总和是类似的,它调用阶乘以进行到达迭代(除了这次索引增加),并且每次索引为偶数时通过乘以 -1 来创建一个交替符号。这就是我们生产 1 的方式! - 2! + 3! - 4! + . . . + (n+1)! - (n+2)!

我希望这会有所帮助。 . .

如果您无法将其拆分为函数,请尝试将其全部写入一个 main 函数中。 . .我在 C 中测试了这段代码,它可以工作。随意使用代码并尝试阅读每一行的作用。祝你好运。

【讨论】:

  • 你用的是什么语言? C# 还是 C++?
  • 我正在使用它...在 Ansi C 中 :)
  • 请不要为明显的作业问题提供完整的代码解决方案。提问者不会学到任何东西(除了如何复制和粘贴代码)。最好只引导他们朝着他们需要去的方向,让他们自己到达那里。
【解决方案2】:

把它分成两个函数。而不是

sum += i;

sum = sum - i;

尝试:

sum += factorial(i);

sum = sum - factorial(i)

其中阶乘是一些计算阶乘的方法:

long int factorial(int n) {
    long int fact = n;
    while ( n > 1) {
        n--;
        fact *= n;
    }

    return fact;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多