# Count Set-bits of number using Recursion

• Last Updated : 17 Nov, 2021

Given a number N. The task is to find the number of set bits in its binary representation using recursion.

Examples:

Input : 21
Output :
21 represented as 10101 in binary representation

Input : 16
Output :
16 represented as 10000 in binary 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++

 `// CPP program to find number ` `// of set bist in a number` `#include ` `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

 ``

Output:

`3`

Time Complexity: O(log n)

Auxiliary Space: O(log n)

My Personal Notes arrow_drop_up
Recommended Articles
Page :