繁体   English   中英

递归:二进制到十进制

[英]Recursion: Binary to 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;

    }
}

没有基本情况; binary2Decimal (3-arg版本) 始终会自行调用。 (由于从一个调用到下一个调用的唯一改变是high ,因此您的基本情况可能会涉及到这一点。)

一些要点:

您的方法:public static void binary2Decimal(String binary,int low,int high)应该具有int的返回类型,而不是void。

您没有使用变量low(因此您可以根据需要摆脱它)。

您需要一个带有以下代码的基本案例:

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

否则,您将陷入无限循环,并且您的方法将无限期递归。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM