Given a number N. The task is to find the number of set bits in its binary representation using recursion.
Examples:
Input : 21
Output : 3
21 represented as 10101 in binary representationInput : 16
Output : 1
16 represented as 10000 in binary representation
Approach:
- First, check the LSB of the number.
- If the LSB is 1, then we add 1 to our answer and divide the number by 2.
- If the LSB is 0, we add 0 to our answer and divide the number by 2.
- Then we recursively follow step (1) until the number is greater than 0.
Below is the implementation of the above approach :
C++
// CPP program to find number // of set bist in a number #include <bits/stdc++.h> using namespace std; // Recursive function to find // number of set bist in a number int CountSetBits( int n) { // Base condition if (n == 0) return 0; // If Least significant bit is set if ((n & 1) == 1) return 1 + CountSetBits(n >> 1); // If Least significant bit is not set else return CountSetBits(n >> 1); } // Driver code int main() { int n = 21; // Function call cout << CountSetBits(n) << endl; return 0; } |
Java
// Java program to find number // of set bist in a number class GFG { // Recursive function to find // number of set bist in a number static int CountSetBits( int n) { // Base condition if (n == 0 ) return 0 ; // If Least significant bit is set if ((n & 1 ) == 1 ) return 1 + CountSetBits(n >> 1 ); // If Least significant bit is not set else return CountSetBits(n >> 1 ); } // Driver code public static void main (String [] args) { int n = 21 ; // Function call System.out.println(CountSetBits(n)); } } // This code is contributed by ihritik |
Python3
# Python3 program to find number # of set bist in a number # Recursive function to find # number of set bist in a number def CountSetBits(n): # Base condition if (n = = 0 ): return 0 ; # If Least significant bit is set if ((n & 1 ) = = 1 ): return 1 + CountSetBits(n >> 1 ); # If Least significant bit is not set else : return CountSetBits(n >> 1 ); # Driver code if __name__ = = '__main__' : n = 21 ; # Function call print (CountSetBits(n)); # This code is contributed by 29AjayKumar |
C#
// C# program to find number // of set bist in a number using System; class GFG { // Recursive function to find // number of set bist in a number static int CountSetBits( int n) { // Base condition if (n == 0) return 0; // If Least significant bit is set if ((n & 1) == 1) return 1 + CountSetBits(n >> 1); // If Least significant bit is not set else return CountSetBits(n >> 1); } // Driver code public static void Main () { int n = 21; // Function call Console.WriteLine(CountSetBits(n)); } } // This code is contributed by ihritik |
Javascript
<script> // Javascript program to find number // of set bist in a number // Recursive function to find // number of set bist in a number function CountSetBits(n) { // Base condition if (n == 0) return 0; // If Least significant bit is set if ((n & 1) == 1) return 1 + CountSetBits(n >> 1); // If Least significant bit is not set else return CountSetBits(n >> 1); } // Driver code var n = 21; // Function call document.write(CountSetBits(n)); // This code is contributed by Amit Katiyar </script> |
3
Time Complexity: O(log n)
Auxiliary Space: O(log n)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!