首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言數字序列求和函數實現:邏輯錯誤修正

     編輯:程式設計綜合問答

C 語言練習題:實現函數 fun(n, a) 計算 a + aa + aaa + ... (n項),如 fun(3, 2) = 2 + 22 + 222 = 246。本文給出正確邏輯與代碼。

題目理解

  • 參數 n:項數
  • 參數 a:單個數字 (0-9)
  • 第 i 項 = a 重複 i 次構成的數字

正確遞推公式

第 i 項可由第 i-1 項推導:

term_i = term_{i-1} * 10 + a

完整實現

int fun(int n, int a) {
  int sum = 0;
  int term = 0;
  for (int i = 1; i <= n; i++) {
    term = term * 10 + a; // 構造當前項:1→a, 2→aa, 3→aaa...
    sum += term;
  }
  return sum;
}

// 測試
int main() {
  printf("%d\n", fun(3, 2)); // 246
  printf("%d\n", fun(4, 1)); // 1234
  return 0;
}

常見錯誤分析

  • 直接用 pow(10, i) 浮點運算導致精度問題
  • 迴圈邊界錯誤(i < n vs i <= n)
  • 未正確構造每一項數字

遞推法優勢

  • 純整數運算,無精度損失
  • O(n) 時間,O(1) 空間
  • 邏輯直觀,易於擴展(如求模、大數相加)

掌握「當前項從上一項推導」思想,可解決大數數列構造類問題。

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