如何使用最少的系统资源在 ANSI C 中创建 "infinite" 系列的交替符号?

How to create alternating sign of an "infinite" series in ANSI C using the least amount of system resources?

我是第一次使用 ANSI C,我需要将一个级数求和到 N 个项。

我的背景是物理学,而不是 CS,所以我本能地想到使用旧的 (-1)^N 技巧,但很快意识到 1) 它不起作用,并且 2) ANSI C 不起作用有一个内置的求幂运算符。

由于我现在意识到求幂很慢,为此创建交替级数的最佳方法是什么?我的第二个想法是检查 N 的奇偶校验,然后使用 if 语句给我一个 1 或 -1 来乘以该项,但我不知道在计算机上检查奇偶校验的任何好方法,我认为它会比取幂 -1 还要慢。

有没有更好的方法来完成这个不会对 CPU 造成沉重负担的方法?

只需将符号作为一个单独的变量,并在处理每一项时取反:

int sign = 1;
for ( int i = 0; i < N; i++ )
{
    printf( "%2d\n", sign );
    sign = -sign;
}