# 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 :**

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**

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

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 implementation 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 <bits/stdc++.h>` `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

`<?php` `// PHP program to find Sum` `// of digits of a number` `// formed by repeating a number` `// X number of times until` `// sum becomes single digit.` `// return single digit` `// sum of a number.` `function` `digSum(` `$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.` `function` `repeatedNumberSum( ` `$n` `, ` `$x` `)` `{` ` ` `$sum` `= ` `$x` `* digSum(` `$n` `);` ` ` `return` `digSum(` `$sum` `);` `}` `// Driver Code` `$n` `= 24; ` `$x` `= 3;` `echo` `repeatedNumberSum(` `$n` `, ` `$x` `);` `// This code is contributed by anuj_67.` `?>` |

## Javascript

`<script>` `// Javascript program to find Sum` `// of digits of a number formed by` `// repeating a number X number of` `// times until sum becomes single digit.` `// Return single digit` `// sum of a number.` `function` `digSum(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.` `function` `repeatedNumberSum(n, x)` `{` ` ` `sum = x * digSum(n);` ` ` `return` `digSum(sum);` `}` `// Driver Code` `let n = 24;` `let x = 3;` `document.write(repeatedNumberSum(n, x));` `// This code is contributed by _saurabh_jaiswal.` `</script>` |

**Output :**

9