【问题标题】:Memoization Function taking more time than non memoized one记忆功能比非记忆功能花费更多时间
【发布时间】:2017-06-23 08:29:08
【问题描述】:

我正在尝试在 javascript 中实现记忆技术。但我的记忆功能比非记忆功能花费更多时间。我想我已经正确实现了记忆功能(我是编程新手)。 任何人都可以帮助并让我知道原因。

记忆功能码:

function fiboeven(n){
    var cache =[]
    if (n in cache)  return cache[n]
    else if (n === 1) return cache[0] = 2
    else if (n === 2) return cache[1] = 8
    else return cache[n] = 4*fiboeven(n-1) + fiboeven(n-2)
} 

非记忆函数:

function fiboeven(n){
    if (n === 1)
        return 2
    else if (n === 2)
        return 8
    else
        return 4*fiboeven(n-1) + fiboeven(n-2)
}

【问题讨论】:

  • 缓存不要在你的函数中初始化,否则会一直为空

标签: javascript memoization


【解决方案1】:

不会在每次调用后回收您的缓存。而你并没有真正使用它:

var cache=[0,2,8];
function fiboeven(n){
        if (cache[n])  return cache[n];
        return cache[n] = 4*(cache[n-1] || fiboeven(n-1)) + (cache[n-2] || fiboeven(n-2));
}

http://jsbin.com/fatoxivola/edit?console

or 运算符 ( || ) 尝试首先获取一个缓存值,如果它不存在则递归生成它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2015-08-03
    • 1970-01-01
    相关资源
    最近更新 更多