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 に答える