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