Очень большая сумма - Hacker Rank - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь решить задачу «Очень большая сумма» в Hacker Rank: https://www.hackerrank.com/challenges/a-very-big-sum/problem

Там мне нужно суммировать все числа в данном массиве, поэтому я пришел с двумя решениями:

Первое решение

function aVeryBigSum(ar){
  let sum = 0;
  for(let i = 0; i < ar.length; i++){
     sum += i;
   }
}

Второе решение

function(ar){
 let sum = ar.reduce((accumulator, currentValue) => {
  accumulator + currentValue;

}); }

Но ни один из них не работает, и я не знаю почему. Мне кажется, что я пишу это не так, как того требует Hacker Rank, но я не уверен

Ответы [ 2 ]

2 голосов
/ 29 мая 2020

sum += i; должно быть sum += ar[i];

Также вернуть сумму

function aVeryBigSum(ar){
  let sum = 0;
  for(let i = 0; i < ar.length; i++){
     sum += ar[i];
  }
  return sum;
}

Также функция редуктора должна быть похожей на

function a(ar){
  let sum = (accumulator, currentValue) => accumulator + currentValue;
  return ar.reduce(sum);
}
1 голос
/ 29 мая 2020

В первом решении вы должны проиндексировать массив, а не просто складывать индексы:

function aVeryBigSum(ar){
  let sum = 0;
  for(let i = 0; i < ar.length; i++){
     sum += ar[i];
  }
  return sum;
}

Суммирование массива с помощью reduce:

function aVeryBigSum(ar){
  return ar.reduce((a, b) => a + b, 0);
}

Также обратите внимание, что вы должны возвращать значения в функциях. Хотя это работает для массивов с небольшими числами, вы должны подумать о том, что может случиться, если сумма станет очень большой . (См. Раздел примечание на HackerRank.)

...