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

C語言遞迴求非負整數各位數字和

     編輯:關於C

遞迴定義

DigitSum(n) = n%10 + DigitSum(n/10),基礎情況 n==0 → 0。

實作

#include 

int DigitSum(unsigned int n) {
    if (n == 0) return 0;
    return (n % 10) + DigitSum(n / 10);
}

int main() {
    unsigned int n;
    printf("請輸入非負整數: ");
    scanf("%u", &n);
    printf("位數和: %d\n", DigitSum(n));
    return 0;
}

迭代版 (生產環境推薦)

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

尾遞迴優化 (編譯器 -O2 可消除棧)

int DigitSumTail(unsigned int n, int acc) {
    if (n == 0) return acc;
    return DigitSumTail(n / 10, acc + n % 10);
}
// 呼叫: DigitSumTail(n, 0)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved