Почему эта функция возвращает неопределенные? Я видел более чистые и эффективные способы сделать это, и я понимаю, что обычно это неправильная практика, чтобы модифицировать такой массив. Тем не менее, я не понимаю, почему этот пример не возвращает 15. Я консольно зарегистрирован как сумасшедший. Заранее благодарю за вашу дзен-новизну.Простой рекурсивный базовый футляр
Шаги, как я их вижу:
- Pass в массиве и не дают второй аргумент, который по умолчанию 0
- значение массива извлекается и это добавляется к общему количеству
- Рекурсивный вызов проходя недавно укороченный массив, а также текущее общее количество.
- Когда длина массива равна нулю, условие выхода выполняется и возвращается сумма.
var sumOfArray = function(array, total = 0) {
var temp = 0;
// base case
if (array.length == 0) {
return total;
}
temp += array.pop();
total += temp;
sumOfArray(array, total);
};
console.log('sumOfArray([1, 2, 3, 4, 5]=' + sumOfArray([1, 2, 3, 4, 5]));
Вы должны * вернуть * возвращаемое значение из рекурсивного вызова, иначе вы ничего не вернете (= undefined). – trincot
да, конечно, спасибо! – adamb