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

标签 c math 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;
}

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

相关文章:

c - 用于嵌入式设备的 C 语言微型垃圾收集器

c - s[ ] 是一个数组。&s 应该给出衰退指针的地址

algorithm - 如何计算非二次幂字母表的 de Bruijn 序列?

c# - 在 C# 中使用 DirectX 进行开发的资源?

ios - "Oops: ; return error;"是 C 中的有效方法声明吗?

c - 包括类型定义,但不包括函数

algorithm - 3D 空间 : following the direction that an object is pointing towards, 使用鼠标指针

c - 如何以编程方式写下这个数学表达式?

wpf - 样式或资源中的WPF DataGrid列

java - 我如何正确地使用 Log4j,关闭所有 Appender 并因此关闭文件