【发布时间】:2015-06-23 00:40:19
【问题描述】:
问题:递归地反转单链表。
我知道如何解决这个问题,但是我的递归方法之一是错误的,我无法弄清楚这段代码有什么问题。有人能弄清楚吗?非常感谢!
测试用例: 输入: [1,2,3] 输出: [3,1] 预期的: [3,2,1]
public class Solution {
// recursive
ListNode last = null;
public ListNode reverseList(ListNode head) {
if (head == null) return null;
helper(head);
return last;
}
private ListNode helper(ListNode head) {
// base case
if (head.next == null) {
last = head;
return head;
}
// general case
ListNode prev = reverseList(head.next); // should be ListNode prev = helper(head.next);
prev.next = head;
head.next = null;
return head;
}
}
【问题讨论】:
-
为您使用的编程语言添加标签会很有帮助。
-
在递归函数中使用“全局”(最后一个)通常是一个不好的迹象。
-
另一个不好的迹象是,您从
helper方法中返回了一些东西,而reverseList中没有使用它... -
谢谢大家!我太粗心了,写错了方法名。但是为什么在递归中使用全局变量不好呢?
标签: recursion