1. 程式人生 > >蹦床函式,可以將遞迴執行轉化為迴圈執行

蹦床函式,可以將遞迴執行轉化為迴圈執行


遞迴函式:
function sum(x, y) {
    if (y > 0) {
        return sum(x + 1, y - 1)
    } else {
        return x
    }
}
sum(1, 10000)蹦床函式優化:
function trampoline(f) {
    while (f && f instanceof Function) {
        f = f()
    }
    return f
}function sum(x, y) {
    if (y > 0) {
        return sum.bind(null, x + 1, y - 1)
    } else {
        return x
    }
}trampoline(sum(1, 100000))
// 100001