javascript记忆函数用于存储计算的中间结果

作者: 大海 分类: web前端 发布时间: 2017-07-04 22:49 ė1103 views 6没有评论
/**
 * 记忆函数,存储计算的中间结果
 * @param  {[type]} memo    初始的数组
 * @param  {[type]} formula 计算函数
 * @return {[type]}         [description]
 */
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;
};
//计算斐波那契额数列
var fibonacci = memoizer([0,1], function(recur, n){
    return recur(n-1) + recur(n-2);
});
fibonacci(9);
//计算阶乘
var factorial = memoizer([1,1], function(recur,n){
    return n * recur(n-1);
});
factorial(3);

本文出自 纳百川,转载时请注明出处及相应链接。

本文永久链接: https://www.bicner.com/1017.html

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Ɣ回顶部