You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java递归实现十进制转2-16进制输出顺序错误问题求助

问题根因
  • 输出顺序颠倒:进制转换取余操作得到的是从低位到高位的结果,当前递归逻辑先打印当前位余数再递归处理商,会直接输出逆序的结果,这就是256转8进制输出不符合预期的核心原因。
  • 缺少16进制字符映射:基数大于10时,余数1015需要对应输出AF,直接打印数字会得到不符合规范的结果。
修复方案

调整递归的执行顺序,先递归处理商输出高位,再打印当前位的余数,同时添加16进制字符映射逻辑,修复后的递归函数代码如下:

public static void recursionFunction(int Decimal, int Base){
    char[] digitMap = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    if (Decimal == 0) {
        return;
    }
    // 先递归处理商,优先输出高位
    recursionFunction(Decimal / Base, Base);
    // 输出当前位对应的字符
    System.out.print(digitMap[Decimal % Base]);
}

如果需要兼容输入为0的场景,可以在main方法调用递归函数前添加判断:

if (DValue == 0) {
    System.out.print(0);
} else {
    recursionFunction(DValue, TBase);
}

修复后测试十进制256转八进制,会得到正确结果400。

内容的提问来源于stack exchange,提问作者Rafael Nathan Ang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:54:03