添加交替标志的术语总和

时间:2013-01-11 18:20:38

标签: recursion numbers

可能是一个菜鸟问题,但我想不出以一般方式解决以下问题的优雅方法。我想我曾经在Euler上看过它,它一直困扰着我。

假设您有一个复数z,我想要一个可以执行以下操作的函数。

s = +/-z^0
s = +/-z^0 + +/-z^1
s = +/-z^0 + +/-z^1 + +/-z^2
...

有谁知道解决这个问题的好方法?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是我的解决方案。 zExp是一组预先计算的指数项。

void sumSeries(zSum, zExp, count) {
    if (count == 0) {
        zSum += zExp[0];
        doSomethingWith(zSum);
        zSum -= 2*zExp[0];
        doSomethingWith(zSum);
    } else {
        zSum += zExp[0];
        sumSeries(zSum + zExp[count], zExp, count);
        zSum -= 2*zExp[0];
        sumSeries(zSum - zExp[count], zExp, count);
    }
}