Javascript 我的Euler#8项目解决方案不再有效

Javascript 我的Euler#8项目解决方案不再有效,javascript,arrays,sorting,for-loop,numbers,Javascript,Arrays,Sorting,For Loop,Numbers,因此,我在网上解决了一个问题,我在1000位数的数字中找到了5个连续数字中最大的乘积: var bignumber = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329

因此,我在网上解决了一个问题,我在1000位数的数字中找到了5个连续数字中最大的乘积:

        var bignumber = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
    var bigarray = bignumber.split("");
    var prod = [];
    var buy = 1;
    var z = 4;
    for (var i = 0; i < bigarray.length; i+=z) {
      mult = bigarray[i];
      for (var x = 1; x <= z; x++) {
        mult *= bigarray[i+x];
      }
      prod.push(mult);
    }
    prod.sort(function(a, b){return b-a});
    document.write(prod[0]);
var bignumber="7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
var bigarray=bignumber.split(“”);
var prod=[];
var购买=1;
var z=4;
对于(变量i=0;i

函数getMaxProductConseq(s,n){
返回Math.max(…s.split(“”)
.map((u,i,a)=>a.slice(i,i+n))
.切片(0,s.长度-n+1)
.map(sa=>sa.reduce((p,c)=>+p*+c));
}
变量bignumber=”7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";

console.log(getMaxProductConseq(bignumber,13));
您的错误在第
行(var i=0;i

  • 将循环条件更改为
    i
    。原因:由于内部for循环前进到z索引,外部循环必须确保至少有z个元素从索引
    i
    重新排列

  • >P>将循环增量更改为<代码> I+=1 < /代码>原因:考虑在输入<代码> 1221中找到两个连续数字的最大乘积“
    1*2=2
    2*1=2
    是您的算法计算的内容。但是,解决方案是
    2*2=4
    ,只有将每个输入数字作为可能的起点时才能找到


    一旦你做了这些更改,你就可以开始优化你的算法。例如,你可以重复使用上一次迭代中的
    mult
    值。

    谢谢你的努力,但你计算的是总和而不是乘积+我不想要新的解决方案我想知道我的code@Ahmed穆罕默德,哦,只是一个小小的误会保留。感谢您的提醒。现在应该可以了。很抱歉,我调试不好。从头开始做要快得多。请将其作为您将来参考的想法。