// Given a non-negative int n, return the sum of its digits recursively (no loops).
// Note that mod (%) by 10 yields the rightmost digit (126 % 10 is 6),
// while divide (/) by 10 removes the rightmost digit (126 / 10 is 12).
//
// sumDigits(126) → 9
// sumDigits(49) → 13
// sumDigits(12) → 3
#include <stdio.h>
// To enable debug messages uncomment #define
#define TEST 1
int sumDigits(int n);
void startTesting();
int main(void) {
#ifdef TEST
startTesting();
#endif
return 0;
}
int sumDigits(int n) {
if (n / 10 <= 0) {
return n;
}
return (n %10) + sumDigits(n / 10);
}
void startTesting()
{
int result = 0;
int i = 0;
for (i = 115; i <= 125; i++) {
result = sumDigits(i);
printf("SumDigits(%d) = %d\n", i
, result
); }
}