java - 使用递归将十六进制值转换为十进制值

标签 java recursion

我完全被这个问题难住了。我必须利用当前的代码结构使用递归将用户输入的十六进制值转换为十进制值。递归调用的方法头无法更改。我在没有使用递归的情况下就解决了这个问题,但我一生都无法思考如何做到这一点。

//编辑——已解决

public class hextodecimal {

    public static void main(String[] args) {

        // Test out the parsing with values from page 719
        System.out.println(hexToDecimal("7F"));
        System.out.println(hexToDecimal("FFFF"));
        System.out.println(hexToDecimal("431"));
    }

    public static int hexToDecimal(String hexString) {
        return hexToDecimal(hexString, 0, hexString.length() - 1);
    }

    public static int hexToDecimal(String hexString, int end, int hexLength) {
        if (hexLength < end)
            return 0;
        else {
            int decValue;
        if (hexString.charAt(hexLength) == 'A')
            decValue = 10;
        else if (hexString.charAt(hexLength) == 'B')
            decValue = 11;
        else if (hexString.charAt(hexLength) == 'C')
            decValue = 12;
        else if (hexString.charAt(hexLength) == 'D')
            decValue = 13;
        else if (hexString.charAt(hexLength) == 'E')
            decValue = 14;
        else if (hexString.charAt(hexLength) == 'F')
            decValue = 15;
        else
            decValue = hexString.charAt(hexLength) - '0';

        return hexToDecimal(hexString, end, hexLength - 1) * 16
            + decValue;
        }
  }
}

最佳答案

只有两个选择。处理最左边的字符,并将 substring(1) 递归地传递给自己,或者处理最右边的字符,并将左边的内容递归地传递给自己。这应该已经足够暗示了。

关于java - 使用递归将十六进制值转换为十进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8381372/

相关文章:

java - 当我能够通过 FileZilla 连接时,我无法从 SFTP 文件源中提取文件

java - Deeplearning4j 预测二手车价格

java - 递归搜索目录,但系统目录出现 NullPointerException

c - 递归段错误

java - 具有头部和尾部的可变数量的嵌套循环

javascript - 无法从目录中递归获取所有文本文件名

java - 无法使用 struts 2.0 框架上传 2gb 大小的文件

java比较两个枚举

java - 如何仅使用 eclipse 控制台中的信息来解决异常?

java - 将数字从二进制转换为十进制 最高有效位 (MSB) 导致不良结果