Algorítimo que faz conversão de binário para decimal usando recursividade

1 resposta
java
J

Olá pessoal,

Eu desenvolvi um algoritmo para converter números binários para decimais, porém não sei como usar função.
Segue código.
package Bin;

import java.util.Scanner;

public class Bin

public static void main(String[] args) {

Scanner s = new Scanner (System.in);

int num[] = new int[100];

int total = 0, bin = 0, cont = 0;
String binario;  

    
     binario = s.nextLine();
   
        
       
    
        if (cont == 0) {
            for (int i = 0; i < binario.length(); i++) {
                
                bin = binario.charAt(i);

                
                if (bin == 48) {
                    num[i] = 0;
                }

               
                if (bin == 49) {
                    num[i] = 1;
                }

                
                total = num[i] + 2 * total;
                
                
            }
        }
         System.out.println("O resultado é: " + total);
    }
}

1 Resposta

S

Uma função recursiva é uma função que faz uma chamada a si mesmo.

public static int decimal(String bits) {
    int tamanho = bits.length();
    int bitAtual = Integer.parseInt(bits.substring(0, 1));
    String bitsRestantes = bits.substring(1);
    return bitAtual * (int) Math.pow(2, tamanho - 1) + decimal(bitsRestantes);
}

Exemplo de uso:

System.out.println(decimal("0000"));
System.out.println(decimal("0001"));
System.out.println(decimal("0010"));
System.out.println(decimal("0011"));
System.out.println(decimal("0100"));
System.out.println(decimal("0101"));
System.out.println(decimal("0110"));
System.out.println(decimal("0111"));
System.out.println(decimal("1000"));
System.out.println(decimal("1001"));
System.out.println(decimal("1010"));
System.out.println(decimal("1011"));
System.out.println(decimal("1100"));
System.out.println(decimal("1101"));
System.out.println(decimal("1110"));
System.out.println(decimal("1111"));
Criado 21 de novembro de 2019
Ultima resposta 21 de nov. de 2019
Respostas 1
Participantes 2