Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Базовий випадок у рекурсії». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Базовий випадок** - це умова, за якої рекурсивна функція **перестає викликати себе** і **повертає результат одразу**, зупиняючи рекурсію. **Ключове:** без базового випадку рекурсія стає нескінченною і переповнює стек.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**Коротко:** **Базовий випадок** - це умова, при якій рекурсивна функція **перестає викликати себе** і **повертає результат одразу**. Він зупиняє рекурсію. --- ### Розгорнуте пояснення У рекурсії задача ділиться на дрібніші підзадачі того самого типу. Щоб рекурсивний процес не був нескінченним, потрібна **точка зупинки** - базовий випадок. Коли вхідні дані досягають цієї "межі простоти", функція **не робить рекурсивний виклик**, а повертає готове значення. **Ознаки хорошого базового випадку:** 1. **Однозначність** - легко визначити, що далі ділити задачу немає сенсу. 2. **Повнота** - базовий випадок покриває реальні "крайові" входи. 3. **Досяжність** - кожен рекурсивний крок наближає аргументи до базового випадку. **Приклади:** - Факторіал: ```javascript function factorial(n) { if (n === 0) return 1; // базовий випадок return n * factorial(n - 1); // рекурсивний крок } ``` - Обхід масиву: ```javascript function sum(arr, i = 0) { if (i === arr.length) return 0; // базовий випадок: порожній хвіст return arr[i] + sum(arr, i + 1); } ``` - Пошук у дереві: ```javascript function find(node, target) { if (!node) return null; // базовий: порожня гілка if (node.value === target) return node; // базовий: знайдено return find(node.left, target) || find(node.right, target); } ``` **Типові помилки:** - Немає базового випадку -> нескінченна рекурсія і переповнення стека. - Базовий випадок є, але **рекурсивний крок не скорочує задачу** (не наближає до бази). - Неповний базовий випадок (не враховано `0`, порожній масив, `null` тощо). **Поради:** - Спочатку сформулюй базовий випадок словами, потім кодуй. - Перевір, що кожен рекурсивний виклик робить вхід "простішим". - Для кількох "країв" (наприклад, `n < 0`, `n === 0`, `n === 1`) - визнач **кілька базових випадків**.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.