zoukankan      html  css  js  c++  java
  • js 记忆函数

    使用js记忆函数来计算菲波那切数列、阶乘等,可以极大减少我们必须要做的工作,加速程序计算。

    1.编写记忆函数memoizer

    var memoizer = function(memo, fundamental) {	//memo记忆数组和fundamental函数
    
    	//管理memo存储、何时调用fundamental
    	var shell = function(n) {
    		var result = memo[n];					
    		if(typeof result !== 'number') {
    			result = fundamental(shell, n);
    			memo[n] = result;
    		}
    		return result;
    	};
    	return shell;
    };
    

    2.菲波那切数列

    //用memoizer定义fibonacci函数
    var fibonacci = memoizer([0, 1], function(shell, n) {
    	return shell(n - 1) + shell(n - 2);
    });
    
    fibonacci(10);
    >  55  //结果
    

    3.阶乘

    //用memoizer定义factorial函数
    var factorial = memoizer([1, 1], function(shell, n) {
    	return n * shell(n - 1);
    });
    
    factorial(10);
    
    >  3628800    //结果
    

      

  • 相关阅读:
    Leetcode 283. Move Zeroes
    算法总结
    随机森林
    BRICH
    DBSCAN算法
    k-means算法的优缺点以及改进
    soket编程
    手电筒过河
    字符串反转
    URAL 1356. Something Easier(哥德巴赫猜想)
  • 原文地址:https://www.cnblogs.com/luckythan/p/4810915.html
Copyright © 2011-2022 走看看