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

使用递归不反转链表反向打印时输出异常问题求助

问题根因分析
  • 核心错误是printReverse方法内的递归调用方法名写错,你写的是print(temp.next),正确应该是printReverse(temp.next)。
  • 你当前的输出完全符合该错误的执行逻辑:假设你的项目中存在一个print方法,功能是顺序打印传入节点到链表末尾的所有元素,调用printReverse(值为1的头节点)时,会先执行print(值为2的节点)直接输出2 3 4 5,再打印当前节点的1,最终结果就是2 3 4 5 1。
  • 修改终止条件后输出不变的原因也很简单:你的代码根本没有触发printReverse的多层递归,所有深层遍历逻辑走的都是print方法的逻辑,修改printReverse的终止条件当然不会对输出产生任何影响。
修复方案

仅需修改printReverse方法内的递归调用行即可:

public static void printReverse(Node<Integer> temp) {
    if(temp == null) {
        return;
    }
    // 把print改为printReverse即可
    printReverse(temp.next);
    System.out.print(temp.data);
}

修复后输入1 2 3 4 5 -1,输出会变为54321,符合反向打印的要求。

内容的提问来源于stack exchange,提问作者jas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:24:05