递归小案例

122 阅读1分钟

求斐波那契数列第 n 项值

初始版

function getNum(n) {
    if (n==1 || n==2) {
        return 1
    }
    return getNum(n-1) + getNum(n-2)
}

优化版

var obj = {}
function getNum(n) {
    if (obj[n] != undefined) {
        return obj[n]
    } else {
        if (n==1 || n==2) {
            obj[n] = 1
            return 1
        } else {
            obj[n] = getNum[n-1] + getNum(n-2)
            return obj[n]
        }
    }
}

遍历dom树

function getAllEle(ele) {
    var list = []
    for (var i = 0; i < ele.children.length; i++) {
        var child = ele.children[i]
        list.push(child)
        var newList = getAllEle(child)
        list = list.concat(newList)
    }
    return list
}
console.log(getAllEle(document))