DigitSum(n) = n%10 + DigitSum(n/10),基礎情況 n==0 → 0。
#includeint 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;
}
int DigitSumTail(unsigned int n, int acc) {
if (n == 0) return acc;
return DigitSumTail(n / 10, acc + n % 10);
}
// 呼叫: DigitSumTail(n, 0)