递归中缓存的使用

这是在《高性能 javascript》中看到的阶乘递归函数

function memfactorial(n){
    if(!memfactorial.cache){
        memfactorial.cache = {
	    "0": 1,
	    "1": 1
	}
    }
    if(!memfactorial.cache.hasOwnProperty(n)){
        memfactorial.cache[n] = n * memfactorial(n-1)
    }
    return memfactorial.catche[n]
}

在这个函数中,用对象存储了每次递归的值,在多次调用递归时,每个数的阶乘只需要算一次,大大的提高了性能,我想这也是缓存存在的意义

posted @ 2020-04-26 09:36  布小星  阅读(451)  评论(0编辑  收藏  举报