Страницы

Поиск по вопросам

четверг, 8 ноября 2018 г.

Сумма двумерного массива через рекурсию

Здравствуйте, сегодня столкнулся с такой вот задачей:
Дан двумерный массив с числами. Найдите сумму элементов этого массива используя рекурсию и не используя цикл.
Смог решить только данным способом игнорируя условия задачи (не закомиченное решение простой перебор с сложением, если через рекурсию то первая функция превращает двумерный массив в одномерный и из него уже считается сумма через рекурсию):
var arr = [1, 2, [3, 4]], result = 0, //при рекурсии меняется на array sumArr = 0; function newArr(arr) { for (var i = arr.length; i--;) { if (typeof(arr[i]) == 'number') { //result.push(arr[i]); result += +arr[i]; } for (var j = arr.length; j--;) { if (typeof(arr[i][j]) == 'number') { //result.push(arr[i][j]); result += +arr[i][j]; } } } } newArr(arr); console.log(result); /*function sum (result){ if(result.length > 0){ sumArr += result[0]; result.shift(); sum(result); } } sum(result); console.log(sumArr);*/
Есть способ решить данную задачу не нарушая условий полностью через рекурсию без использования циклов?


Ответ

Сделал без использования циклов вообще.
var test = [1, 1, 1, [1, 1, [1, [1, [ [1], [1] ]], 1], 1], 1]; function arrSum(array, i = 0) { if (isFinite(array)) return Number(array); else if (typeof array == "object" && i < array.length) // верно только если array - массив (имеет свойство length) return arrSum(array[i]) + arrSum(array, i + 1); return 0; } console.log(arrSum(test));

Комментариев нет:

Отправить комментарий