0

我需要编写一个程序“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;
}

但我不知道/不知道如何将其作为阶乘总和。

4

2 回答 2

1

将其拆分为两个功能。代替

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;
}
于 2012-12-16T23:36:04.997 回答
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 中测试了这段代码,它可以工作。随意使用代码并尝试阅读每一行的作用。祝你好运。

于 2012-12-16T23:40:40.587 回答