In this tutorial we have been given a number. we’ll be calculating the sum of its digits

**Examples : **

Input :n = 787Output :22Input :n = 43Output :7

##### Method 1

Most Simple algorithm to calculate sum of digits of a number

- Get the number
- Declare a number to store the sum and initialize it to 0
- get the unit digit of number with help of % operator by dividing it by 10 and add it to the sum
- Now divide the number by 10 to remove the current unit digit
- repeat the steps 3 and 4 until the number is 0
- print the sum.

That’s how simple it is. Lol

So below is the implementation of the above algorithm

```
#include <stdio.h>
int main()
{
int getSum(int n)
{
int sum=0;
while(n!=0)
{
sum=sum+n%10;
n = n / 10;
}
return sum;
}
int n=123456;
int Sum=getSum(n);
printf("%d",Sum);
return 0;
}
```

**Output**

21

##### Method 2

What if I tell you that you don’t have to write a long program like the first one. You can calculate the sum in just one line of program.

```
#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;
}
// Driver code
int main()
{
int n = 687;
printf(" %d ", getSum(n));
return 0;
}
```

##### Method 3: Recursive Method

```
// C program to compute
// sum of digits in number.
#include <stdio.h>
using namespace std;
int sumDigits(int no)
{
return no == 0 ? 0 : no % 10 + sumDigits(no / 10);
}
int main(void)
{
printf("%d", sumDigits(687));
return 0;
}
```

**Output**

21

##### Method 4: **Using Tail Recursion**

This problem can also be solved using Tail Recursion. Here is an approach to solving it.

1. Add another variable “Val” to the function and initialize it to ( val = 0 )

2. On every call to the function add the mod value (n%10) to the variable as “(n%10)+val” which is the last digit in n. Along with pass the variable n as n/10.

3. So on the First call it will have the last digit. As we are passing n/10 as n, It follows until n is reduced to a single digit.

4. n<10 is the base case so When n < 10, then add the n to the variable as it is the last digit and return the val which will have the sum of digits

Below is the implementation of the algorithm

```
#include <stdio.h>
int main()
{
int getSum(int n, int val)
{
if(n<10)
{
val=val+n;
return val;
}
else
return getSum(n / 10, (n % 10) + val);
}
int n=123456;
int Sum=getSum(n,0);
printf("%d",Sum);
return 0;
}
```

For more C Programming related blogs Visit Us Geekycodes . Follow us on Instagram.

**If** **you’re a college student and have skills in programming languages, Want to earn through blogging? Mail us at geekycomail@gmail.com**