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.
C++
#include<bits/stdc++.h>
using namespace std;
int toDecimal(string binary, int i=0)
{
int n = binary.length();
if (i == n-1)
return binary[i] - '0' ;
return ((binary[i] - '0' ) << (n-i-1)) +
toDecimal(binary, i+1);
}
int main()
{
string binary = "1010" ;
cout << toDecimal(binary) << endl;
return 0;
}
|
Java
class GFG
{
static int toDecimal(String binary, int i)
{
int n = binary.length();
if (i == n- 1 )
return binary.charAt(i) - '0' ;
return ((binary.charAt(i) - '0' ) << (n-i- 1 )) +
toDecimal(binary, i+ 1 );
}
public static void main(String []args)
{
String binary = "1010" ;
int i= 0 ;
System.out.println(toDecimal(binary,i));
}
}
|
Python3
def toDecimal(binary, i = 0 ):
n = len (binary)
if (i = = n - 1 ) :
return int (binary[i]) - 0
return ((( int (binary[i]) - 0 ) << (n - i - 1 )) +
toDecimal(binary, i + 1 ))
if __name__ = = "__main__" :
binary = "1010"
print (toDecimal(binary))
|
C#
using System;
class GFG
{
static int toDecimal( string binary, int i=0)
{
int n = binary.Length;
if (i == n-1)
return binary[i] - '0' ;
return ((binary[i] - '0' ) << (n-i-1)) +
toDecimal(binary, i+1);
}
public static void Main()
{
string binary = "1010" ;
Console.WriteLine(toDecimal(binary));
}
}
|
PHP
<?php
function toDecimal( $binary , $i = 0)
{
$n = strlen ( $binary );
if ( $i == $n - 1)
return ord( $binary [ $i ]) - ord( '0' );
return ((ord( $binary [ $i ]) - ord( '0' )) << ( $n - $i - 1)) +
toDecimal( $binary , $i + 1);
}
$binary = "1010" ;
echo toDecimal( $binary ) . "\n" ;
?>
|
Javascript
<script>
function toDecimal(binary,i)
{
let n = binary.length;
if (i == n-1)
return binary[i] - '0' ;
return ((binary[i] - '0' ) << (n-i-1)) +
toDecimal(binary, i+1);
}
let binary = "1010" ;
let i=0;
document.write(toDecimal(binary,i));
</script>
|
Time complexity: O(N) where N is the length of binary string
Auxiliary space: O(N) for recursive stack space.
Last Updated :
30 Sep, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...