我是第一次使用 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;
}
关于c - 如何使用最少的系统资源在 ANSI C 中创建 "infinite"系列的交替符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425634/