将字符串二进制转换为int十进制

时间:2018-09-26 05:54:39

标签: java recursion

我需要使用递归,但似乎无法弄清楚。我需要创建一个方法来将二进制字符串转换为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

3 个答案:

答案 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。