How can we sum the digits of a given number in single statement?

Given a number, find sum of its digits.

Example :

Input : n = 687
Output : 21

Input : n = 12
Output : 3

 
Below are the solutions to get sum of the digits.

1. Iterative:
The function has three lines instead of one line but it calculates sum in line. It can be made one line function if we pass pointer to sum.

# include<stdio.h>
/* Function to get sum of digits */
int getSum(int n)
{
    int sum;
    /*Single line that calculates sum*/
    for(sum=0; n > 0; sum+=n%10,n/=10);
    return sum;
}

int main()
{
  int n = 687;
  printf(" %d ", getSum(n));
  return 0;
}

2. Recursive
Thanks to ayesha for providing the below recursive solution.

int sumDigits(int no)
{
  return no == 0 ? 0 : no%10 + sumDigits(no/10) ;
}

int main(void)
{
  printf("%d", sumDigits(1352));
  getchar();
  return 0;
}

Please write comments if you find the above codes/algorithms incorrect, or find better ways to solve the same problem.

GATE CS Corner    Company Wise Coding Practice

Recommended Posts:







Writing code in comment? Please use ide.geeksforgeeks.org, generate link and share the link here.