JS记忆函数

memoizer函数取得的一个初始的memo数组和formula函数。它返回一个管理memo储存和在需要时调用用formula函数的recur函数。我们把这个recur函数和它的参数传递给formula函数:

var memoizer = function (memo, formula) {

    var recur = function (n) {

        var result = memo[n];

        if(typeof result !== "number") {
            result = formula(recur, n);

            memo[n] = result;

        }

        return result;

    }

    return recur;

}

如下例子:

1、斐波那契数列

var fibonacci = memoizer([0, 1], function(recur, n) {

    return recur(n - 1) + recur(n - 2);

});

2、阶乘函数

var factorial = memoizer([1, 1], function(recur, n) {

    return n * recur(n - 1);

});

 


版权声明:本文为JohnZhongJob原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>