Suggest an editImprove this articleRefine the answer for “Base case in recursion”. Your changes go to moderation before they’re published.Approval requiredContentWhat you’re changing🇺🇸EN🇺🇦UAPreviewTitle (EN)Short answer (EN)A **base case** is the condition at which a recursive function **stops calling itself** and **returns the result immediately**, stopping the recursion. **Key point:** without a base case, recursion becomes infinite and overflows the stack.Shown above the full answer for quick recall.Answer (EN)Image**In short:** A **base case** is the condition at which a recursive function **stops calling itself** and **returns the result immediately**. It stops the recursion. --- ### Detailed explanation In recursion, a task is divided into smaller subtasks of the same type. For the recursive process not to be infinite, it needs a **stopping point** - the base case. When the input reaches this "boundary of simplicity", the function **does not make a recursive call** and instead returns the ready value. **Signs of a good base case:** 1. **Unambiguity** - it is easy to tell that dividing the task further makes no sense. 2. **Completeness** - the base case covers the real "edge" inputs. 3. **Reachability** - every recursive step brings the arguments closer to the base case. **Examples:** - Factorial: ```javascript function factorial(n) { if (n === 0) return 1; // base case return n * factorial(n - 1); // recursive step } ``` - Array traversal: ```javascript function sum(arr, i = 0) { if (i === arr.length) return 0; // base case: empty tail return arr[i] + sum(arr, i + 1); } ``` - Tree search: ```javascript function find(node, target) { if (!node) return null; // base: empty branch if (node.value === target) return node; // base: found return find(node.left, target) || find(node.right, target); } ``` **Common mistakes:** - No base case -> infinite recursion and stack overflow. - A base case exists, but **the recursive step does not shrink the task** (does not approach the base). - Incomplete base case (does not account for `0`, an empty array, `null`, etc.). **Tips:** - First state the base case in words, then code it. - Check that every recursive call makes the input "simpler". - For several "edges" (for example, `n < 0`, `n === 0`, `n === 1`), define **several base cases**.For the reviewerNote to the moderator (optional)Visible only to the moderator. Helps review go faster.