我正在研究一种递归方法,它将二进制数作为字符串并显示其十进制等效值。我不确定我的基本情况是否正确。另外,我是否正确地在方法中强加了递归?
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;
}
}
答案 0 :(得分:0)
你不 基础案例; binary2Decimal
(3-arg版本)始终调用自身。 (因为从一个调用到下一个调用的唯一变化是high
,你的基本情况应该以某种方式涉及。)
答案 1 :(得分:0)
有些观点:
你的方法: public static void binary2Decimal(String binary,int low,int high) 应该有一个返回类型int而不是void。
你没有使用你的变量低(如果你愿意,你可以摆脱它)。
您需要一个包含以下代码的基本案例:
if (high == 0) {
return somevalue;
}
else {
return binary2Decimal(binary,low,high -1)+temp;
}
否则你将进入无限循环,你的方法将无限递归。