# 77. Combinations

## Medium

***

Given two integers `n` and `k`, return *all possible combinations of* `k` *numbers out of the range* `[1, n]`.

You may return the answer in **any order**.

**Example 1:**

```
Input: n = 4, k = 2
Output:
[
  [2,4],
  [3,4],
  [2,3],
  [1,2],
  [1,3],
  [1,4],
]
```

**Example 2:**

```
Input: n = 1, k = 1
Output: [[1]]
```

**Constraints:**

* `1 <= n <= 20`
* `1 <= k <= n`

Solution

```python
class Solution:
    def combine(self, n: int, k: int) -> List[List[int]]:
        result = []
        def recursion(n, k, start=1, temp=[]):
            nonlocal result
            if k <= 0:
                result.append(list(temp))
                return temp
            for index in range(start, n+1):
                temp.append(index)
                # if (k-1) == 0:
                #     result.append(list(temp))
                t = recursion(n, k-1,index+1, temp)
                temp.pop()
        recursion(n,k,1,[])
        return result
```
