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,因为您没有任何基本情况;所以不,他们是不正确的。