迭代,可以理解为:用循环(for/while)去遍历操作
递归,可以理解为:用同一个函数,不同参数去一层一层的操作。嵌套的函数的参数是本函数的某些结果。
如:反转链表
// 迭代
var reverseList = function(head) {
let [pre, curr] = [null, head];
while(curr) {
let temp = curr.next
curr.next = pre
pre = curr
curr = temp
}
return pre
}
// 递归
var reverseList = function(head) {
return reverse(null, head);
};
function reverse (prev, curr) {
if (!curr) return prev;
let tmp = curr.next;
curr.next = prev;
return reverse(curr, tmp);
};
|