Beschouw de lijst $$t$$, bestaande uit $$N$$ natuurlijke getallen. Elk van die tellers kan een waarde tussen 1 en $$n-1$$ aannemen (grenzen inbegrepen). De lijst $$t$$ kan als getal in het $$n$$-tallig stelsel geïnterpreteerd worden. Voor $$n = 10$$ en $$t = [1, 2, 3, 4]$$ komen we aldus tot het decimale getal 1234, voor $$n = 2$$ en $$t = [0, 1, 0, 1, 1]$$ tot het bitpatroon 01011, voor $$n = 3$$ en $$t = [2, 2, 1, 2]$$ het patroon 2212 in het 3-tallig stelsel.

We definiëren de opvolger van de lijst $$t$$ als de lijst die geïnterpreteerd kan worden als 1 hoger dan het getal waarmee $$t$$ overeenstemt. Zo is de opvolger van $$t = [1, 2, 3, 4]$$ en $$n = 10$$ gegeven door $$[1, 2, 3, 5]$$, de opvolger van $$t = [0, 1, 0, 1, 1]$$ voor $$n = 2$$ is $$[0, 1, 1, 0, 0]$$, en de opvolger van $$t = [2, 2, 1, 2]$$ voor $$n = 3$$ is $$[2, 2, 2, 0]$$. Verder definiëren we de opvolger van $$[n-1, n-1, ..., n-1]$$ als $$[0, 0, ..., 0]$$.

Schrijf de functie opvolger() met als argumenten:

Het resultaat is een nieuwe lijst, namelijk de opvolger van $$t$$ (zoals hierboven gedefinieerd).

LET OP: Je code mag geen lusconstructies bevatten (geen for- of while-lussen en ook geen comprehensions), en moet dus recursief geschreven worden.

Voorbeeld

l = [1, 2, 3]
for i in range(10):
    print(l)
    opvolger(l, 4)
#[1, 2, 3]
#[1, 3, 0]
#[1, 3, 1]
#[1, 3, 2]
#[1, 3, 3]
#[2, 0, 0]
#[2, 0, 1]
#[2, 0, 2]
#[2, 0, 3]
#[2, 1, 0]
l = [4, 4, 3]
for i in range(5):
    print(l)
    opvolger(l, 5)
#[4, 4, 3]
#[4, 4, 4]
#[0, 0, 0]
#[0, 0, 1]
#[0, 0, 2]