Programa recursivo de binario a decimal

Dado un número binario como string, encuentre su equivalente decimal.
Ejemplos: 
 

Input :  binary = "101"
Output :   5

Input :  binary = "1111"
Output :   15

Hemos discutido la solución iterativa para convertir binario a decimal .
La idea es simple, agregamos el término actual y recurrimos para los términos restantes.
 

binary2decimal

C++

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

Java

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

Python3

# 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

C#

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

PHP

<?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
?>

Javascript

<script>
 
// Recursive JavaScript program to convert binary
// decimal
 
    function toDecimal(binary,i)
    {
        // If we reached last character
        let 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
    let binary = "1010";   
    let i=0;
    document.write(toDecimal(binary,i));
     
 
 
// This code is contributed by avanitrachhadiya2155
 
</script>
Producción: 

10

 

Publicación traducida automáticamente

Artículo escrito por KelechiOgudu1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *