# Recursive sum of digits of a number formed by repeated appends

Given two positive number N and X. The task is to find the sum of digits of a number formed by N repeating X number of times until sum become single digit.

Examples :

```Input : N = 24, X = 3
Output : 9
Number formed after repeating 24 three time = 242424
Sum = 2 + 4 + 2 + 4 + 2 + 4
= 18
Sum is not the single digit, so finding
the sum of digits of 18,
1 + 8 = 9

Input : N = 4, X = 4
Output : 7
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

As discussed in this post, recursive sum of digits is 9 if number is multiple of 9, else n % 9. Since divisibility and modular arithmetic are compatible with multiplication, we simply find result for single occurrence, multiply result with x and again find the result.

How does this work ?
Lets N = 24 and X = 3.
So, sumUntilSingle(N) = 2 + 4 = 6.
Multiplying 6 by 3 = 18
sumUntilSingle(18) = 9.

Below is the implemenatation of this approach:

## C++

 `// C++ program to find Sum of digits of a ` `// number formed by repeating a number X number of ` `// times until sum become single digit. ` `#include ` `using` `namespace` `std; ` ` `  `// return single digit sum of a number. ` `int` `digSum(``int` `n) ` `{ ` `    ``if` `(n == 0) ` `        ``return` `0; ` `    ``return` `(n % 9 == 0) ? 9 : (n % 9); ` `} ` ` `  `// Returns recursive sum of digits of a number  ` `// formed by repeating a number X number of ` `// times until sum become single digit. ` `int` `repeatedNumberSum(``int` `n, ``int` `x) ` `{ ` `    ``int` `sum = x*digSum(n); ` `    ``return` `digSum(sum); ` `} ` ` `  `// Driver program ` `int` `main() ` `{ ` `    ``int` `n = 24, x = 3; ` `    ``cout << repeatedNumberSum(n, x) << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java program to find Sum of digits of a ` `// number formed by repeating a number X number of ` `// times until sum become single digit. ` ` `  `class` `GFG { ` `     `  `    ``// return single digit sum of a number. ` `    ``static` `int` `digSum(``int` `n) ` `    ``{ ` `        ``if` `(n == ``0``) ` `            ``return` `0``; ` `        ``return` `(n % ``9` `== ``0``) ? ``9` `: (n % ``9``); ` `    ``} ` `     `  `    ``// Returns recursive sum of digits of a number  ` `    ``// formed by repeating a number X number of ` `    ``// times until sum become single digit. ` `    ``static` `int` `repeatedNumberSum(``int` `n, ``int` `x) ` `    ``{ ` `        ``int` `sum = x * digSum(n); ` `        ``return` `digSum(sum); ` `    ``} ` `         `  `    ``// Driver program  ` `    ``public` `static` `void` `main (String[] args)  ` `    ``{ ` `        ``int` `n = ``24``, x = ``3``; ` `        ``System.out.println(repeatedNumberSum(n, x)); ` `    ``} ` `} ` ` `  `// This code is contributed by Ajit. `

## Python3

 `# Python program to find Sum of digits of a ` `# number formed by repeating a number X number  ` `# of times until sum become single digit. ` ` `  `# Return single digit sum of a number ` `def` `digSum(n): ` `    ``if` `n ``=``=` `0``: ` `        ``return` `0` `    ``return` `(n ``%` `9` `=``=` `0``) ``and` `9` `or` `(n ``%` `9``) ` `     `  `# Returns recursive sum of digits of a number  ` `# formed by repeating a number X number of ` `# times until sum become single digit. ` `def` `repeatedNumberSum(n, x): ` `    ``sum` `=` `x ``*` `digSum(n) ` `    ``return` `digSum(``sum``) ` ` `  `# Driver Code ` `n ``=` `24``; x ``=` `3` `print``(repeatedNumberSum(n, x)) ` ` `  `# This code is contributed by Ajit. `

## C#

 `// C# program to find Sum of digits of a ` `// number formed by repeating a number X  ` `// number of times until sum becomes ` `// single digit. ` `using` `System; ` ` `  `public` `class` `GFG ` `{      ` `    ``// return single digit sum of a number. ` `    ``static` `int` `digSum(``int` `n) ` `    ``{ ` `        ``if` `(n == 0) ` `            ``return` `0; ` `             `  `        ``return` `(n % 9 == 0) ? 9 : (n % 9); ` `    ``} ` `     `  `    ``// Returns recursive sum of digits of a ` `    ``// number formed by repeating a number X ` `    ``// number of times until sum become  ` `    ``// single digit. ` `    ``static` `int` `repeatedNumberSum(``int` `n, ``int` `x) ` `    ``{ ` `        ``int` `sum = x * digSum(n); ` `        ``return` `digSum(sum); ` `    ``} ` `     `  `    ``// driver program ` `    ``public` `static` `void` `Main ()  ` `    ``{ ` `        ``int` `n = 24, x = 3; ` `        ``Console.Write( repeatedNumberSum(n, x)); ` `    ``} ` `} ` ` `  `// This code is contributed by Sam007 `

## PHP

 ` `

Output :

`9`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Improved By : vt_m

Article Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.