[Python] N桁のビット列を全て求める

問題

N桁のビット列を全て求めなさい。

回答

その1

def apped_zero_one_front(x, L):
    return [x + i for i in L]

def bit_strings(n):
    if n == 0:
        return []
    if n == 1:
        return ['0', '1']
    else:
        return apped_zero_one_front('0', bit_strings(n-1)) \
                + apped_zero_one_front('1', bit_strings(n-1))
    
print(bit_strings(1))

その2

def bit_strings(n):
    if n == 0:
        return []
    if n == 1:
        return ['0', '1']
    ans = []
    for bs in bit_strings(n-1):
        for digit in bit_strings(1):
            ans.append(digit + bs)
    return ans

print(bit_strings(4))