Java 递归:二进制到十进制

Java 递归:二进制到十进制,java,recursion,binary,decimal,Java,Recursion,Binary,Decimal,我正在研究一种递归方法,它将二进制数作为字符串,并显示其十进制等价项。我不确定我的基本情况是否正确。另外,我是否正确地在方法中施加递归 public static void main(String[] args){ System.out.println("Enter a binary string "); String binary = input.nextLine(); System.out.println("The decimal equivalent of "

我正在研究一种递归方法,它将二进制数作为字符串,并显示其十进制等价项。我不确定我的基本情况是否正确。另外,我是否正确地在方法中施加递归

public  static void main(String[] args){
    System.out.println("Enter a binary string ");
    String binary = input.nextLine(); 

    System.out.println("The decimal equivalent of " + binary + " is "+ binary2Decimal(binary));
}

//MethodOverloading
public static int binary2Decimal(String binary){
    return binary2Decimal(binary,0, binary.length()-1);
    }
public static void binary2Decimal(String binary, int low, int high){
        int temp=0;
        if(binary.charAt(high) == 0)
            temp *= 2;
        else if(binary.charAt(high) == 1)
            temp = (temp * 2) + 1;
        return binary2Decimal(binary,low,high -1)+temp;

    }
}
你没有一个基本情况;binary2Decimal 3-arg版本始终调用自身。因为从一个呼叫到下一个呼叫的唯一变化是高,所以您的基本情况可能会涉及到这一点。

一些要点:

您的方法: 公共静态void binary2DecimalString二进制,int低,int高 返回类型应为int而不是void

您没有使用变量low,因此如果需要,可以将其删除

您需要一个包含以下代码的基本案例:

if (high == 0) {
  return somevalue;
}
else {
  return binary2Decimal(binary,low,high -1)+temp;
}

否则,您将进入一个无限循环,并且您的方法将无限期地递归。

基本情况在哪里?为什么要使用递归呢?binary2Decimal的返回类型应该是INT,因为您没有任何基本情况;所以不,他们是不正确的。