• Source
    1. // Given a non-negative int n, return the sum of its digits recursively (no loops).
    2. // Note that mod (%) by 10 yields the rightmost digit (126 % 10 is 6),
    3. // while divide (/) by 10 removes the rightmost digit (126 / 10 is 12).
    4. //
    5. // sumDigits(126) → 9
    6. // sumDigits(49) → 13
    7. // sumDigits(12) → 3
    8.  
    9. #include <stdio.h>
    10.  
    11. // To enable debug messages uncomment #define
    12. #define TEST 1
    13.  
    14. int sumDigits(int n);
    15. void startTesting();
    16.  
    17. int main(void) {
    18. #ifdef TEST
    19. startTesting();
    20. #endif
    21.  
    22. return 0;
    23. }
    24.  
    25. int sumDigits(int n) {
    26. if (n / 10 <= 0) {
    27. return n;
    28. }
    29.  
    30. return (n %10) + sumDigits(n / 10);
    31. }
    32.  
    33. void startTesting()
    34. {
    35. int result = 0;
    36. int i = 0;
    37.  
    38. for (i = 115; i <= 125; i++) {
    39. result = sumDigits(i);
    40.  
    41. printf("SumDigits(%d) = %d\n", i, result);
    42. }
    43. }