递归:二进制到十进制

时间:2014-11-18 17:02:09

标签: 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 " + 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;

    }
}

2 个答案:

答案 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;
}

否则你将进入无限循环,你的方法将无限递归。

相关问题