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

C 語言分數數列求和替代實作:陣列儲存分子分母

     編輯:關於C語言

C 語言分數數列求和替代實作:陣列儲存分子分母

思路

將每一項的分子、分母分別存入陣列,再累加計算。適合需要保留中間項值的場合。

程式碼

#include <stdio.h>

double print_s(int n) {
    double p1[50], p2[50], Sn[50];
    p1[0] = 2; p2[0] = 1;
    Sn[0] = p1[0] / p2[0];

    for (int i = 1; i < n; ++i) {
        p1[i] = p1[i-1] + p2[i-1]; // 分子 = 前分子 + 前分母
        p2[i] = p1[i] - p2[i-1];   // 分母 = 前分子
        Sn[i] = Sn[i-1] + (p1[i] / p2[i]);
    }
    return Sn[n-1];
}

int main() {
    int n;
    printf("輸入項數: ");
    scanf("%d", &n);
    if (n > 0 && n <= 50)
        printf("前 %d 項和 = %.5f\n", n, print_s(n));
    else
        printf("項數範圍 1-50\n");
    return 0;
}

與遞推法比較

特性遞推法 (單變數)陣列法
空間複雜度O(1)O(n)
可回溯中間值否是
程式碼簡潔度高中

若僅需最終和,遞推法更優;若需列印每項明細或進一步分析,陣列法更方便。

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