繁体   English   中英

使用递归方法将二进制转换为十进制

[英]Converting binary to decimal using recursive method

我已经做了很多事情,但是我不知道要为我的递归方法添加什么。 我不知道在num1 =(Math.pow(base,(binToDecimal( s.length()-1 ))))中放入什么; s.length() - 1不起作用,因为它不是一个字符串,但我不知道在这里放什么。 我的递归方法是否也适用于基本情况? 我的想法是,每次它都会将字符串的长度每次减少一,并且在字符串的长度为零时会停止,但是我认为它不起作用。 你也可以使用Math.pow来做这个吗? 我在网上看过其他一些解决方案,但没有一个使用Math.pow

public static int binToDecimal(String s)
{
    //base case
    if(s.equals("1"))
        return 1;
    if(s.equals("0"))
        return 0;

    int num1 = 0;
    int finalAnswer = 0;
    int base = 2.0;
    //recursive case        
    if(s.length() > 1)
        num1 = (Math.pow(base,(binToDecimal(s.length()-1))));
        finalAnswer = num1 + finalAnswer;
    return
        finalAnswer;
}

这是递归算法的另一个版本。 每次迭代都使用最后一个二进制数位,计算字符串其余部分的二进制值乘以2(向左移动),然后将最后一位数的值相加。

public int binChar(char c) {
    return c == '1' ? 1 : 0;
}

public int binToDecimal(String s) {
    switch(s.length()) {
        case 0: return 0;
        case 1: return binChar(s.charAt(0));
        default: {
            int last = s.length() - 1;
            char c = s.charAt(last);
            s = s.substring(0,last);
            return binToDecimal(s) * 2 + binChar(c);
        }
    }
}

暂无
暂无

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

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