Gegeven een lijst getallen (type int
). Het is de bedoeling om deze lijst om te zetten naar een
nieuwe lijst, waarbij elk element van die nieuwe lijst in absolute waarde kleiner dan of gelijk aan een getal $$m > 0$$ is.
Hiertoe gaan we als volgt tewerk voor het element $$x$$ van de originele lijst
- indien $$|x| \le m$$, dan wordt het getal $$x$$ rechtstreeks overgenomen in de nieuwe lijst
- indien $$x > m$$, dan vervangen we $$x$$ door een reeks getallen $$m, m, ... $$ waarbij de som van die reeks gelijk is
aan $$x$$, en alle getallen van die reeks, behalve het laatste, gelijk zijn aan $$m$$ (voor $$x = 10$$ en $$m = 4$$ komt er dus $$4, 4, 2$$)
- indien $$x < -m$$, dan vervangen we $$x$$ door een reeks getallen $$-m, -m, ... $$ waarbij de som van die reeks gelijk is
aan $$x$$, en alle getallen van die reeks, behalve het laatste, gelijk zijn aan $$-m$$ (voor $$x = -10$$ en $$m = -4$$ komt er dus $$-4, -4, -2$$)
Schrijf een
RECURSIEVE functie
begrens()
met als argumenten:
- de originele lijst getallen
- de gewenste bovengrens voor de absolute waarde van de elementen van de nieuwe lijst $$m$$
Het resultaat van de functie is de lijst getallen, zoals hierboven gedefinieerd.
LET OP: je functie MOET recursief geprogrammeerd worden, en mag dus geen lusconstructies of comprehensies
bevatten.
Voorbeeld
c = [1, 10, -10, 2, 5, -5]
print(begrens(c, 4))
#[1, 4, 4, 2, -4, -4, -2, 2, 4, 1, -4, -1]