Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Які задачі вирішує рекурсія». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Рекурсія** застосовується для розв'язання задач, де велику задачу можна природно розділити на **підзадачі того самого типу** - обчислення, обхід структур даних, робота з масивами, алгоритми "розділяй і володарюй", обробка вкладених структур і комбінаторні задачі. **Ключове:** рекурсія застосовується всюди, де задачу можна виразити через простішу версію самої себе, особливо при роботі з вкладеними, деревоподібними й подільними структурами даних.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняРекурсія часто застосовується для розв'язання задач, де велику задачу можна природно розділити на **підзадачі того самого типу**. Ось найтиповіші приклади. --- ### 1. **Математичні обчислення** - **Факторіал числа**: `n! = n * (n-1)!` - **Числа Фібоначчі**: `F(n) = F(n-1) + F(n-2)` - **Піднесення до степеня** через розділення задачі: ```javascript function pow(x, n) { if (n === 0) return 1; return x * pow(x, n - 1); } ``` --- ### 2. **Обхід структур даних** - **Дерева (наприклад, DOM, файлова система):** ```javascript function traverse(node) { console.log(node.value); node.children.forEach(traverse); } ``` - **Графи** (DFS, BFS - часто реалізуються рекурсивно). --- ### 3. **Робота з масивами** - Сума елементів, пошук, фільтрація: ```javascript function sum(arr) { if (arr.length === 0) return 0; return arr[0] + sum(arr.slice(1)); } ``` --- ### 4. **Алгоритми "розділяй і володарюй"** - **Швидке сортування (QuickSort)** - **Сортування злиттям (MergeSort)** - **Бінарний пошук** - **Алгоритм Ханойської вежі** --- ### 5. **Обробка вкладених структур** - Розгортання (flatten) масиву: ```javascript function flatten(arr) { return arr.reduce((acc, val) => acc.concat(Array.isArray(val) ? flatten(val) : val), []); } ``` --- ### 6. **Розв'язання логічних і комбінаторних задач** - Перебір усіх комбінацій і перестановок; - Пошук шляху в лабіринті; - Розв'язання "зважених" задач типу рюкзака (knapsack). --- **Підсумок:** Рекурсія застосовується всюди, де задачу можна виразити **через простішу версію самої себе** - особливо під час роботи з **вкладеними, деревоподібними й подільними структурами даних**.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.