Trace [1, 2, 3] with include/exclude decisions.
Start: current = []. Index 0 (element 1): Include 1: current = [1] Index 1 (element 2): Include 2: current = [1,2] Index 2: include 3 → [1,2,3], exclude 3 → [1,2] Exclude 2: current = [1] Index 2: include 3 → [1,3], exclude 3 → [1] Exclude 1: current = [] Index 1: include 2 → [2], exclude 2 → [] ...continue
Result: [[], [1], [2], [1,2], [3], [1,3], [2,3], [1,2,3]].
subsets, each takes to copy. Total: time. Space: recursion plus output.