Skip to content
Related Articles

Related Articles

Count Set-bits of number using Recursion
  • Last Updated : 21 Aug, 2019

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 represesnted as 10101 in binray representation

Input : 16
Output : 1
16 represesnted as 10000 in binray representation

Approach:



  1. First, check the LSB of the number.
  2. If the LSB is 1, then we add 1 to our answer and divide the number by 2.
  3. If the LSB is 0, we add 0 to our answer and divide the number by 2.
  4. Then we recursively follow step (1) until the number is greater than 0.

Below is the implementation of the above approach :

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 signifiant 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 signifiant 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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 signifiant bit is set
    if((n & 1) == 1):
        return 1 + CountSetBits(n >> 1);
      
    # If Least signifiant 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 

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 signifiant 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

chevron_right


Output:

3

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
Recommended Articles
Page :