使用递归不反转链表反向打印时输出异常问题求助
问题根因分析
- 核心错误是
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
相关产品推荐
相关产品推荐

