可能是一个菜鸟问题,但我想不出以一般方式解决以下问题的优雅方法。我想我曾经在Euler上看过它,它一直困扰着我。
假设您有一个复数z,我想要一个可以执行以下操作的函数。
s = +/-z^0
s = +/-z^0 + +/-z^1
s = +/-z^0 + +/-z^1 + +/-z^2
...
有谁知道解决这个问题的好方法?任何帮助将不胜感激。
答案 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);
}
}