簡體   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