Java 将字符串二进制转换为整数十进制
我需要使用递归,但我似乎无法理解。我需要创建一个方法来调用,该方法将二进制字符串转换为整数十进制形式。我只需要用递归就可以了。这意味着没有全局变量或循环。 以下是我所拥有的:Java 将字符串二进制转换为整数十进制,java,recursion,Java,Recursion,我需要使用递归,但我似乎无法理解。我需要创建一个方法来调用,该方法将二进制字符串转换为整数十进制形式。我只需要用递归就可以了。这意味着没有全局变量或循环。 以下是我所拥有的: public class Practice { public static void main( String[] args ) { if( convert( "1010111" ) == 57) { System.out.println( "t
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
如果二进制字符串只有一位数长,那么任务就很简单
对于长度n>1的字符串,分为前n-1位和最后一位。通过递归调用找到前n-1个数字的值,然后将结果乘以2,再加上最后一个数字。如果您需要将递归用作家庭作业或练习,以下是您可以考虑的方法: 伪代码:
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
}
}
顺便说一下,1010111是87,而不是57。您的代码甚至没有编译。temp是一个字符串,不能对字符串执行temp/%100或temp*2操作。一般建议:不要将变量命名为“temp”,除非它确实是非常临时的,也就是说,它的使用只持续几个语句。特别是,方法参数很少是临时的。这意味着没有全局变量或loopsso Integer.parseInt不被视为递归?不,递归意味着函数正在调用自身。@JamesCalhone递归是,在convert内部调用convert。这里的Integer.parseInt只是一个语句。如何获取前缀和lastdigit?这是一种可能的方法,还有很多其他方法。试一试,看看你能找到什么。如果这很可能是OP的家庭作业,我宁愿不提供实际的代码。相反,我们应该给他一个暗示,让他自己帮他解决这个问题
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));
}