Сумма параметров функции рекурсивно
Не получается найти сумму аргументов функции с помощью рекурсии. если передан массив, то понял как это делается (уже была такая тема здесь),если без рекурсии, то тоже не возникает проблем.
пробую передать параметры через спред оператор, но выдает ошибку. подскажите, что делаю не так?
let sum = 0;
let i = 0;
function summ(...arr) {
if (arr.length !== i) {
sum = sum + summ(arr[i])
i++;
return sum
} else return sum
}
summ(5, 7, 10, 1, 39)
Ответы (2 шт):
Автор решения: azlov
→ Ссылка
Давайте посмотрим, как работает функция для вашего массива summ(5, 7, 10, 1, 39)
function summ(...arr) {
if (arr.length !== i) { // 5 != 0 - ок
sum = sum + summ(arr[i]) // далее будет вызван summ(5)
для summ(5)
if (arr.length !== i) { // 1 != 0 - ок
sum = sum + summ(arr[i]) // и снова вызов summ(5)
И так происходит циклично до переполнения стека
Автор решения: Aziz Umarov
→ Ссылка
Так попробуйте, может то или нет
function summ(...arr) {
console.log(`called sum with params (${arr})`);
if (arr.length == 1) {
return arr[0];
} else {
return arr[0] + summ(...arr.slice(1));
}
}
console.log(`sum of (5, 7, 10, 1, 39) = ${summ(5, 7, 10, 1, 39)}`)