繁体   English   中英

如何使用最少的系统资源在ANSI C中创建“无限”级数的交替符号?

[英]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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM