Recursive Program for Binary to Decimal

Given a binary number as string, find its decimal equivalent.

Examples:

Input :  binary = "101"
Output :   5

Input :  binary = "1111"
Output :   15


We have discussed iterative solution to convert Binary to Decimal.

The idea is simple, we add current term and recur for remaining terms.

binary2decimal

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// Recursive CPP program to convert binary 
// decimal
#include<bits/stdc++.h>
using namespace std;
  
int toDecimal(string binary, int i=0)
{
    // If we reached last character
    int n = binary.length();
    if (i == n-1)
      return binary[i] - '0';
      
    // Add current tern and recur for
    // remaining terms
    return ((binary[i] - '0') << (n-i-1))  +
            toDecimal(binary, i+1);
}
  
// Driver code
int main()
{
    string binary = "1010";
    cout << toDecimal(binary) << endl;
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Recursive Java program to convert binary 
// decimal
  
  
class GFG
{
    static int toDecimal(String binary,int i)
    {
        // If we reached last character
        int n = binary.length();
        if (i == n-1)
        return binary.charAt(i) - '0';
          
        // Add current tern and recur for
        // remaining terms
        return ((binary.charAt(i) - '0') << (n-i-1)) +
                toDecimal(binary, i+1);
    }
      
    // Driver code
    public static void main(String []args)
    {
        String binary = "1010";
        int i=0;
        System.out.println(toDecimal(binary,i));
          
    }
  
}
  
// This code is contributed 
// by ihritik ( Hritik Raj)

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Recursive Python3 program to convert 
# binary decimal 
  
def toDecimal(binary, i = 0):
  
    # If we reached last character 
    n = len(binary) 
    if (i == n - 1) :
        return int(binary[i]) - 0
      
    # Add current tern and recur for 
    # remaining terms 
    return (((int(binary[i]) - 0) << (n - i - 1)) + 
                        toDecimal(binary, i + 1))
  
# Driver code 
if __name__ == "__main__" :
      
    binary = "1010"
    print(toDecimal(binary))
  
# This code is contributed by Ryuga

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// Recursive C# program to convert binary 
// decimal
  
  
using System;
class GFG
{
    static int toDecimal(string binary, int i=0)
    {
        // If we reached last character
        int n = binary.Length;
        if (i == n-1)
        return binary[i] - '0';
          
        // Add current tern and recur for
        // remaining terms
        return ((binary[i] - '0') << (n-i-1)) +
                toDecimal(binary, i+1);
    }
      
    // Driver code
    public static void Main()
    {
        string binary = "1010";
        Console.WriteLine(toDecimal(binary));
          
    }
  
}
  
// This code is contributed 
// by ihritik ( Hritik Raj)

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php 
// Recursive CPP program to convert 
// binary decimal
  
function toDecimal($binary, $i = 0)
{
    // If we reached last character
    $n = strlen($binary);
    if ($i == $n - 1)
    return ord($binary[$i]) - ord('0');
      
    // Add current tern and recur for
    // remaining terms
    return ((ord($binary[$i]) - ord('0')) << ($n - $i - 1)) +
             toDecimal($binary, $i + 1);
}
  
// Driver code
$binary = "1010";
echo toDecimal($binary) . "\n";
  
// This code is contributed by ita_c
?>

chevron_right


Output:

10


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.