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



我是第一次使用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( "%2dn", sign );
sign = -sign;
}

最新更新