human
I wrote the below code

    k = len(charset)
    a = (([0] * k) * n)
    sequence = []
    def db(t, p):
        if (len(sequence) == maxlen):
            return
        if (t > n):
            if ((n % p) == 0):
                for j in range(1, (p + 1)):
                    sequence.append(charset[a[j]])
                    if (len(sequence) == maxlen):
                        return
        else:
            a[t] = a[(t - p)]
            db((t + 1), p)
            for j in range((a[(t - p)] + 1), k):
                a[t] = j
                db((t + 1), t)
    db(1, 1)
    return ''.join(sequence)

What's a good function header?
assistant
#Here's a good function header.

def de_bruijn(charset, n, maxlen):