Skip to content

Dsa Recursion All Subsets

DodaTech 1 min read

In this tutorial, you'll learn about How to Fix Recursive Subsets Errors. We cover key concepts, practical examples, and best practices.

Fix recursive subsets errors when result list shared reference causing all subsets to be same list.

Quick Fix

Wrong

def subsets(n):
    res=[]
    def dfs(i,cur):
        if i==len(n): res.append(cur); return
        dfs(i+1,cur)
        cur.append(n[i]); dfs(i+1,cur); cur.pop()
    dfs(0,[])
    return res

res.append(cur) appends reference, not copy. All entries become empty list after backtracking.

def subsets(n):
    res=[]
    def dfs(i,cur):
        if i==len(n): res.append(cur.copy()); return
        dfs(i+1,cur)
        cur.append(n[i]); dfs(i+1,cur); cur.pop()
    dfs(0,[])
    return res
[1,2,3] -> [[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]]. O(2^n).

Prevention

Copy cur before adding to result. Recursion explores include/exclude for each element.

DodaTech Tools

Doda Browser's algorithm visualizer steps through DSA operations line by line. DodaZIP archives implementation patterns for team sharing. Durga Antivirus Pro detects memory corruption patterns in algorithm implementations.

FAQ

What is recursive subsets?

Include/exclude each element via DFS backtracking. Copy at leaf.

Why copy?

cur is reused across recursive calls. Without copy, result has shared references.

Include/exclude?

For each element: skip (dfs(i+1,cur)) or include (append, dfs, pop).

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro