# Count the occurrence of digit K in a given number N using Recursion

• Difficulty Level : Hard
• Last Updated : 24 Nov, 2021

Given an integer N greater than 0, the task is to find the occurrence of digit K present in the given number N.
Examples:

Input: N = 10000, K = 0
Output:
Explanation:
Occurrence of ‘0’ digit in 10000 is 4.
Input: N = 51435, K = 5
Output:
Explanation:
Occurrence of ‘5’ digit in 51435 is 2

Approach: The idea is to use recursion to extract the least significant digit of the number in each step and Check that the digit extracted is equal to the given digit K or not. Finally, recurse for checking the next digits of the number by computing the integer division of that number by 10.
Below is the implementation of the above approach:

## C++

 `// C++ implementation to count``// the occurrence of a digit in``// number using Recursion` `#include ` `using` `namespace` `std;` `// Function to count the digit K``// in the given number N``int` `countdigits(``int` `n, ``int` `k)``{``    ``if` `(n == 0)``        ``return` `0;` `    ``// Extracting least``    ``// significant digit``    ``int` `digit = n % 10;``    ``if` `(digit == k)``        ``return` `1 + countdigits(n / 10, k);` `    ``return` `countdigits(n / 10, k);``}` `// Driver Code``int` `main()``{``    ``int` `n = 1000;``    ``int` `k = 0;` `    ``cout << countdigits(n, k) << endl;``    ``return` `0;``}`

## Java

 `// Java implementation to count``// the occurrence of a digit in``// number using Recursion` `import` `java.util.*;`` ` `class` `GFG {``    ` `    ``// Function to count the digit K``    ``// in the given number N``    ``static` `double` `countdigits(``int` `n, ``int` `k)``    ``{``        ``if` `(n == ``0``)``            ``return` `0``;`` ` `        ``// Extracting least``        ``// significant digit``        ``int` `digit = n % ``10``;``        ``if` `(digit == k)``            ``return` `1` `+ countdigits(n / ``10``, k);`` ` `        ``return` `countdigits(n / ``10``, k);``    ``}`` ` `    ``// Driver Code``    ``public` `static` `void` `main(String[] args)``    ``{``        ``int` `n = ``1000``;``        ``int` `k = ``0``;``        ``System.out.println(countdigits(n, k));``    ``}``}`

## Python3

 `# Python implementation to count``# the occurrence of a digit in``# number using Recursion` `# Function to count the digit K``# in the given number N``def` `countdigits(n, k):``    ``if` `n ``=``=` `0``:``        ``return` `0``         ` `    ``# Extracting least``    ``# significant digit``    ``digit ``=` `n ``%` `10``     ` `    ``if` `digit ``=``=` `k:``        ``return` `1` `+` `countdigits(n ``/` `10``, k)`` ` `    ``return` `countdigits(n ``/` `10``, k)` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``n ``=` `1000``;``    ``k ``=` `0``;``    ``print``(countdigits(n, k))`

## C#

 `// C# implementation to count``// the occurrence of a digit in``// number using Recursion` `using` `System;`` ` `class` `GFG {``    ` `    ``// Function to count the digit K``    ``// in the given number N``    ``static` `double` `countdigits(``int` `n,``                              ``int` `k)``    ``{``        ``if` `(n == 0)``            ``return` `0;`` ` `        ``// Extracting least``        ``// significant digit``        ``int` `digit = n % 10;``        ``if` `(digit == k)``            ``return` `1 +``             ``countdigits(n / 10, k);`` ` `        ``return` `countdigits(n / 10, k);``    ``}`` ` `    ``// Driver Code``    ``static` `public` `void` `Main()``    ``{``        ``int` `n = 1000;``        ``int` `k = 0;``        ``Console.WriteLine(countdigits(n, k));``    ``}``}`

## Javascript

 ``

Output:

`3`

Time Complexity: O(log10n)

Auxiliary Space: O(log10n)

My Personal Notes arrow_drop_up