Как рекурсивно найти сумму элементов массива

#1

Все что можно описать циклом можно описть рекурсией. Все что можно выразить рекурсией можно описать циклом. Кто ищет сумму элемента массива через рекурсию, может найти решение ниже:

function summ(arr, sum) {
	sum = sum || 0
	if (arr.length) {
		return summ(arr, sum + arr.pop())
	} else {
		return sum
	}
}
1 Like

Как найти сумму элементов массива
#2

Спасибо за ответ! но без удаления никак?

0 Likes

#3

Можно и без удаления. Но там уже станет вопрос производительности.

Что можно сделать чтобы оригинальный массив не изменялся?

1 Like

#4

Не знаю, может копировать массив в новый массив?!

0 Likes

#5

Да, это сработает.

1 Like

#6

Спасибо

0 Likes

#7

Подскажите пожалуйста, в чем у меня ошибка?
let asa = [1, 2, 3];
function sumArr(arr) {
if(arr == []){
return 0;
} else {
return arr[0] + sumArr(arr.slice(1));
}
}
console.log(sumArr(asa)); //6

0 Likes

#8

все сработало)
спасибо

0 Likes

#9

Есть ошибка в сравнении. Массивы сравниваются по ссылке. Поэтому сравнение любого массива с пустым массивом будет всегда false. (Пустой массив пересоздается на каждое сравнение)

0 Likes

#10

Проверка на пустоту массива должна делаться через .length свойство. Собственно, как написано в посте.

0 Likes