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

C語言求 1+2+...+n 總和:循環累加與數學公式雙重解法

     編輯:關於C語言

題目描述

輸入正整數 n,計算 1+2+...+n 的和。

範例: n=100 → 5050

方法一:for 循環累加(教學基礎)

#include 

int main() {
    int n, sum = 0;
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) // 從 1 開始更符合數學定義
        sum += i;
    printf("%d\n", sum);
    return 0;
}

方法二:數學公式 O(1)(高效、防溢出)

等差數列求和:S = n * (n + 1) / 2

long long sum = (long long)n * (n + 1) / 2; // 先乘後除,用 long long 防溢出

注意: `n*(n+1)` 可能溢出 `int`,必須提升類型。

進階:各位數字之和(常見變體)

輸入 1234 → 1+2+3+4=10

int digit_sum(int n) {
    int sum = 0;
    while (n) {
        sum += n % 10;
        n /= 10;
    }
    return sum;
}

常見面試陷阱

  • ❌ 循環從 0 開始(`i=0; i<=n`)雖結果相同但語義不清
  • ❌ 忽略溢出:n=100000 時 `int` 已溢出
  • ❌ 遞歸實現棧溢出風險:`sum(n) = n + sum(n-1)`

總結

1+...+n 是循環入門經典。**循環法**理解迭代本質;**公式法**體現數學優化思想。工程中**必用公式法**,並注意類型提升防溢出。變體「各位數字和」考察取模除法與循環不變量,同屬基礎必會。

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