Бинарный в десятичный с возвратом в Java

Я считаю разработанным код для превращения бинарного в десятичный, но не умею делать этот же самый код применяя возврат. Действительно у меня есть много сомнений в этой площади и логике, которая, должно быть, остается, чтобы это осуществлять.

Код, который у меня есть, - следующий:

 import java.util.Scanner;
 public class Binariodecimal {
 public static int D=0;
 public static void main(String[] args) {
    Scanner leer= new Scanner(System.in);
    String in;
    System.out.println("Dame un número binario");
    in=leer.next();
    int bi=Integer.parseInt(in);
    int or=(in.length()-1);
    if(bi>=0){
        System.out.println();
        conver(bi,or);
     }
    else{
        bi=(bi/-1);
        System.out.println();
        System.out.println("El número binario: " + bi +  " equivale al decimal:" + D);
        conver(bi,or);
    }
    System.out.println("El número binario: " + bi +  " equivale al decimal:" + D); 
}
public static void conver (int bi,int or){
    if(bi<10){
       int op=(bi%2)*(int)Math.pow(2,or);
       D=D+op;
       return;
    }
    else{
     conver(bi/10,or-1); 
     int op=(bi%2)*(int)Math.pow(2,or);
      D=D+op;
       return;
    }
    }
   }

Он им был бы благодарен за то, чтобы они смогли помогать мне.

1
задан 07.11.2019, 10:08
1 ответ

В continuaciГіn тебе представила возможная одна soluciГіn

public class Binary {
    public static void main(String[] args) {
        String testBin = "111";
        System.out.println("Binary " + testBin + " is " + toDecimal(testBin));
    }

    public static int toDecimal(String binary) {
        return toDecimalHelper(binary, 0, 0);
    }

    public static int toDecimalHelper(String binary, int number, int power) {
        if (binary.length() != 0) {
            int digit = binary.charAt(binary.length() - 1)  == '0' ? 0 : 1;
            number += digit == 1 ? (int) Math.pow(2, power) : 0;
            return toDecimalHelper(binary.substring(0, binary.length() - 1), number, power + 1);
        } 

        return number;
    }
}

AquГ - я стою себе одной funciГіn помогать ей cuГЎl encargarГЎ ее recursiГіn. Когда ты реализуешь так называемый перекурсив, у тебя есть, что сначала осведомляться ВїcuГЎl - общий случай? и потом ВїcuГЎl он ты condiciГіn остановки?.

Для этого упражнения общий случай состоит в том, чтобы брать один из них dГ-gitos, что соразмеряют бинарного и segГєn Ваш posiciГіn в этом случае number, этот общий случай держится пока длина string, которую он содержит бинарные ты, отличалась от 0. Если это не выполняется, он allГ - где мы нашли ее condiciГіn остановки. В конце концов так называемый конец ее recursiГіn lograrГЎ возвращать стоимость в десятичном желаемый.

3
ответ дан 01.12.2019, 12:27

Теги

Похожие вопросы