Code bài tập về nhị phân

n=int(input())
b=[0]*n
a=[]
c=[]
def np(b,x):
    for i in [0,1]:
        b[x]=i
        if x>=n-1:
            print(*b)
            c.append(b)
        else:
            np(b,x+1)
np(b,0)
print(c)

Bài này sao xuất ra khác nhau vậy ạ. Lúc xuất c thì chỉ xuất trường hợp cuối cùng của b vậy ạ

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?