04. Last K Numbers Sequence
Здравейте,
При задача https://judge.softuni.bg/Contests/Practice/Index/1797#3 с решение:
function lastKNumbersSequence(n, k) {
let result = [1];
for(let i=1; i<n; i++) {
let startIndex = Math.max(0, i-k);
let currentElement = result.slice(startIndex, startIndex + k).reduce((a, b) => a + b, 0);
result.push(currentElement);
}
console.log(result.join(" "));
}
Не разбирам това - "result.slice(startIndex, startIndex + k)". След като е създаден масив по-горе с 1 елемент (let result = [1];) и кажеm slise (0, 0+3(k)), след като масива първоначално е с 1 елемент, не трябва ли да даде грешка, предвид, че крайния индекс (startindex+k) е 3, а то няма такъв?
Благодаря! Също не разбирам и ролята на 0 в reduce ((a, b) => a + b, 0)?
това е начална стойност на акумулатора, в случая може и да не я сложиш (ще я приеме за undefined и при събиране с първия елемент ще я коерсне към 0, но пробвай да я промениш на "" и да видиш резултата), btw reduce e по-четливо ако го пишеш не reduce ((a, b) => a + b, 0) ами reduce ((acc, el) => acc + el, 0) понеже така всъщност разбираш параметрите на редуциращата функция как се подават