这是我的问题:
编写一个名为
binaryToDecimal
的递归方法。该方法应将二进制位串转换为基数10整数。来自RecursionExamples
类的对象的示例调用将是answer = example.binaryToDecimal("101111")
返回的整数为47。
我需要帮助来解决这个问题。我知道这将是一个if-else循环,但是如何解决这个问题让我难以置信。 (这是日食环境)。
答案 0 :(得分:2)
如果要递归求解,可以考虑对于二进制字符串,可以通过基于最右边的数字加1或0将其转换为整数,并根据字符串的其余部分将此函数添加2倍。
在伪代码中看起来像这样。
// input is an integer of 1's and 0's
def f( int binaryString ):
int lastDigit = binaryString % 10 // Get the last digit
int restOfString = binaryString / 10 // Remove the last digit
return lastDigit + (2 * f(restOfString)) // add the last digit to twice f
// applied to the rest of the string
您还必须检查字符串的其余部分何时减少为结束条件,但这是该方法的基本逻辑。
答案 1 :(得分:1)
您想要做的很简单:
这是一个更像Java的伪代码,没有透露太多:
public int binToDec(String binary)
{
if (end_conditions) return int
int lastDigit = Integer.process
String restOfString = binary.substring
return lastDigit + 2* binToDec(restOfString);
}
答案 2 :(得分:1)
int binaryToDecimal(String s){
if (s.isEmpty() || Integer.parseInt(s)==0){ // It's a little weird because the only
return 0; // argument is a String.
}
else{
int number = Integer.parseInt(s);
int lastDigit = number % 10;
int remainder = number \ 10;
return lastDigit + 2 * binaryToDecimal(String.valueOf(remainder))
}
}