我是第一次使用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;
}