Last active
March 25, 2016 07:45
-
-
Save yuchuanxi/3600ede04ec56f4d1077 to your computer and use it in GitHub Desktop.
memoized result for function
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* | |
* @authors yuChuanXi (http://yuchuanxi.com, wangfei.f2e@gmail.com) | |
* @date 2016-03-25 15:02:37 | |
* @title title | |
* @description description | |
*/ | |
'use strict'; | |
/** | |
* 缓存函数计算结果,从而提高计算性能,但是会提高内存占用 | |
* @param {Function} fn 需要开启结果缓存的函数 | |
* @return {Function} | |
*/ | |
memoized = function ( fn ) { | |
fn._values = fn._values || {}; | |
return function ( key ) { | |
return fn._values[key] !== undefined ? | |
fn._values[key] : | |
fn._values[key] = fn(key); | |
}; | |
}; | |
/** | |
* 判断一个数字是否为素数 | |
* @param {Number} num 需要被判断的数字 | |
* @return {Boolean} 是/否 | |
*/ | |
function isPrime ( num ) { | |
var prime = num !== 1; | |
for ( var i = 2; i < num; i++ ) { | |
if ( num % i === 0 ) { | |
prime = false; | |
break; | |
} | |
} | |
return prime; | |
} | |
function isPrime2 ( num ) { | |
var | |
prime = num !== 1; | |
isPrime2._values || (isPrime2._values = {}); // 用于缓存函数返回结果 | |
if ( isPrime2._values[num] !== undefined ) { | |
return isPrime2._values[num]; | |
} | |
for ( var i = 2; i < num; i++ ) { | |
if ( num % i === 0 ) { | |
prime = false; | |
break; | |
} | |
} | |
return isPrime2._values[num] = prime; | |
} |
Author
yuchuanxi
commented
Mar 25, 2016
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment