Jun 112012

Write a function which should accept an integer and should return the sum of digits in that integer. This function should compute the sum of digits recursively. For example:

Input Output

——– ———–

56 11 (5+6)

1234 10 (1+2+3+4)

### Solution:

The non-recursive (iterative) function to compute the sum of digits is quite simple. We have to use / (division) and % (modulo) operator

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

The recursive function, will compute extract one digit, add it to the sum and then leave the responsibility of other digits to the following recursive calls:

int sumDigits(int n) { if(n > 0) { n = n%10 + sumDigits(n/10); } return n; }

Note that recursion comes with its side effects and takes more time and space as compared to the iterative version.