0

可能是一个菜鸟问题,但我想不出一种优雅的方式来以一般方式解决以下问题。我想我不久前在 Euler 上看到了它,它一直困扰着我一段时间。

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

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

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

4

1 回答 1

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);
    }
}
于 2013-01-11T21:06:36.603 回答