首页 > 解决方案 > 我在这段JS代码中使用了slice方法,我的代码很慢,有没有办法让这段代码更快?

问题描述

这是来自 Codewars 的 kata:

'如果你已经完成了 Tribonacci 序列型,你现在就会知道斐波那契先生至少有一个更大的兄弟。如果没有,请快速浏览一下以了解事情的运作方式。

好吧,是时候再扩展一下这个系列了:想想一个 Quadribonacci,从 4 个元素的签名开始,每个后面的元素都是前 4 个元素的总和,一个 Pentabonacci(好吧,Cinquebonacci 可能听起来更意大利一点,但它会听起来也很糟糕)具有5个元素的签名,每个后续元素都是前5个元素的总和,依此类推。

好吧,你猜怎么着?您必须构建一个 Xbonacci 函数,该函数采用 X 元素的签名 - 并记住每个下一个元素是最后 X 元素的总和 - 并返回如此种子序列的前 n 个元素。

这是我的解决方案:

function Xbonacci(signature,n){
 let i=0;
  let k = n - signature.length;
   while(k--){
     let sumNums = 0;
     signature.slice(i , signature.length ).map((num)=>{
      return sumNums += num;
     })
     
     signature.push(sumNums);
     i++
   }
  return signature;
}

但由于优化问题,它没有通过测试。我不知道如何优化这段代码。有什么解决方案可以让这段代码更快吗?

标签: javascriptoptimization

解决方案


推荐阅读