# Теория и применение рекурсии в JavaScript

В данном видео я расскажу про рекурсию и с ее помощью решу некоторые практические задачи, например, перебор многомерного массива любого уровня вложенности.

## Исходники кода

`var i = 0; function func() { console.log(i++); if (i <= 10) { func(); } } func();`
`function func(arr) { console.log(arr.shift()); if (arr.length != 0) { func(arr); } } func([1, 2, 3]);`
`function getSum(arr, sum) { sum += arr.shift(); if (arr.length != 0) { sum = getSum(arr, sum); } return sum; } console.log(getSum([1, 2, 3], 0));`
`function func(arr, sum = 0) { sum += arr.shift(); if (arr.length != 0) { sum = func(arr, sum); } return sum; } console.log(func([1, 2, 3]));`
`var sum = 0; function func(arr) { sum += arr.shift(); if (arr.length != 0) { sum = func(arr); } return sum; } console.log(func([1, 2, 3]));`
`function func(arr) { for (var i = 0; i < arr.length; i++) { if (typeof arr[i] == 'object') { arr[i] = func(arr[i]); } else { arr[i] = arr[i] + '!'; } } return arr; } console.log(func([1, [2, 7, 8], [3, 4, [5, 6]]]));`
`function reduceNum(num) { var sum = getDigitsSum(num); if (sum >= 10) { return reduceNum(sum); } else { return sum; } } function getSum(arr) { var sum = 0; for (var i = 0; i < arr.length; i++) { sum += Number(arr[i]); } return sum; } function getDigits(num) { return String(num).split(''); } function getDigitsSum(num) { return getSum(getDigits(num)); } console.log(reduceNum(99));`
← →
↑