思路:
- 递归的基线条件:遍历到末节点(node.next === null)
- 递归的递归条件:node.next !== null
- 当遇到末节点时,返回末节点,末节点的next接受上一个head,返回前一节的,继续下去
- 考虑特殊情况:undefined和null
var reverseList = function (head) { // 闭包 if (head === undefined || head === null) return null; var originalHead = head; var reverseHead; var reverse = function (head) { if (head.next === null) { reverseHead = head; return head; } else { var node = reverse(head.next); node.next = head; if (originalHead === head) { head.next = null; return reverseHead; } else { return head; } } } return reverse(head) }