我需要使用递归,但似乎无法弄清楚。我需要创建一个方法来将二进制字符串转换为int十进制形式。我只需要使用递归来做到这一点。这意味着没有全局变量或循环。 这是我所拥有的:
public class Practice {
public static void main( String[] args ) {
if( convert( "1010111" ) == 57) {
System.out.println( "test worked: 57" );
}
if( convert( "1110001" ) == 113) {
System.out.println( "test worked: 113" );
}
}
public static int convert( String temp ) {
Integer.parseInt(temp);
if(Integer.parseInt(temp)>0) {
return 0;
}
return temp/%100 + convert(temp*2)
}
}
}
输出:
测试成功:57
测试有效:113
答案 0 :(得分:1)
如果二进制字符串只有一位数字,那么任务就很简单了。
对于长度为n > 1
的字符串,请分成前n-1
个数字和最后一个数字。通过递归调用找到前n-1
个数字的值,然后将结果乘以2,然后加上最后一个数字。
答案 1 :(得分:0)
如果您需要使用递归(作为家庭作业或练习),可以考虑以下方式:
伪代码:
int convert(String input) {
if input is empty {
return 0;
}
else {
int lastDigit = last digit of input
String prefix = input excluding last digit
int result = convert(prefix) * 2 + lastDigit
}
}
答案 2 :(得分:0)
public static int convert( String s )
{
int n = s.length();
if(n == 0)
return 0;
else
return Character.getNumericValue(s.charAt(n-1)) + 2*convert(s.substring(0, n-1));
}
顺便说一句,1010111
是87,而不是57。