| 1 | Start | 0 | [] | Check index == len(nums)? No | [] |
| 2 | Exclude nums[0] | 1 | [] | Recurse without nums[0] | [] |
| 3 | Exclude nums[1] | 2 | [] | Recurse without nums[1] | [] |
| 4 | Exclude nums[2] | 3 | [] | Index == len(nums), add [] | [[]] |
| 5 | Include nums[2] | 3 | [3] | Index == len(nums), add [3] | [[], [3]] |
| 6 | Back to index 2 | 2 | [] | Include nums[1] | Recurse with [2] |
| 7 | Exclude nums[2] | 3 | [2] | Index == len(nums), add [2] | [[], [3], [2]] |
| 8 | Include nums[2] | 3 | [2,3] | Index == len(nums), add [2,3] | [[], [3], [2], [2,3]] |
| 9 | Back to index 1 | 1 | [] | Include nums[0] | Recurse with [1] |
| 10 | Exclude nums[1] | 2 | [1] | Recurse without nums[1] | [[], [3], [2], [2,3]] |
| 11 | Exclude nums[2] | 3 | [1] | Index == len(nums), add [1] | [[], [3], [2], [2,3], [1]] |
| 12 | Include nums[2] | 3 | [1,3] | Index == len(nums), add [1,3] | [[], [3], [2], [2,3], [1], [1,3]] |
| 13 | Back to index 2 | 2 | [1] | Include nums[1] | Recurse with [1,2] |
| 14 | Exclude nums[2] | 3 | [1,2] | Index == len(nums), add [1,2] | [[], [3], [2], [2,3], [1], [1,3], [1,2]] |
| 15 | Include nums[2] | 3 | [1,2,3] | Index == len(nums), add [1,2,3] | [[], [3], [2], [2,3], [1], [1,3], [1,2], [1,2,3]] |
| 16 | End | 0 | [] | All subsets generated | [[], [3], [2], [2,3], [1], [1,3], [1,2], [1,2,3]] |