首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

C語言階乘級數求和:while 迴圈版 f = 1 - 1/2! + 1/3! - ... + 1/9! 實作細節

     編輯:關於C

程式碼分析

本文提供 while 迴圈版本的級數求和,但原始碼中迴圈條件寫為 while(i<=2),僅計算前兩項(i=1,2),結果將不正確。正確條件應為 i<=9。

修正後的完整程式碼

#include <stdio.h>

int factorial(int num);

int main()
{
    int i = 1;
    double f = 0;
    int flag = 1;

    while (i <= 9) {          // 修正:應為 9 而非 2
        f += flag * 1.0 / factorial(i);
        flag = -flag;
        i++;
    }

    printf("其結果是: %f\n", f);
    return 0;
}

int factorial(int num)
{
    int j = 1, k = 1;
    while (j <= num) {
        k *= j;
        j++;
    }
    return k;
}

關鍵細節解析

  • flag = -flag 實現正負號交替
  • 1.0 / factorial(i) 強制浮點除法,避免整數除法截斷
  • 階乘函式使用 int,9! = 362880 仍在 int 範圍內;若擴展到 13! 需改用 long long

常見錯誤提醒

  1. 迴圈終止條件寫錯(如本文的 <=2)
  2. 忘記 1.0 導致整數除法結果恆為 0
  3. 階乘函式變數未初始化或迴圈變數衝突

延伸:遞迴版階乘

int factorial(int n) {
    return (n <= 1) ? 1 : n * factorial(n - 1);
}

適合理解遞迴概念,但效率略低於迭代版。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved