# Recursion — Python

Source: https://www.geekswithgeeks.com/en/python/py-recursion

> A function that calls itself to break a problem into smaller pieces.

## Base case + recursive step

Every recursive function needs a **base case** to stop, and a step that moves toward it.

```python
def factorial(n):
    if n <= 1:          # base case
        return 1
    return n * factorial(n - 1)  # recursive step

print(factorial(5))   # 120
```

## Recursion limits

Python's default recursion limit is ~1000 calls deep. For simple counting loops, an ordinary `for`/`while` is usually clearer and faster.
