总值数 - 总和

时间:2012-12-16 23:20:11

标签: sum factorial

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

但我不知道/不知道如何将它作为一个因子总和。

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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。

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

我希望有所帮助。 。

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