We definiëren het kwadraat van een lijst getallen als de lijst van de kwadraten van elk van
die getallen. Nemen we $$a = [a_0, a_1, ..., a_{N-1}]$$, dan geldt $$a^2 = [a_0^2, a_1^2, ..., a_{N-1}^2]$$.
In deze oefening gaan we op zoek naar alle vierkantswortels $$w$$ van een lijst $$c$$. De lijst $$w$$ voldoet
dus aan $$w^2 = c$$. Een lijst van $$N$$ getallen verschillende van 0, heeft dus $$2^N$$ wortels.
Schrijf een RECURSIEVE functie lijst_wortels()
met als enig argument een lijst van strikt positieve reële getallen (dus verschillend van 0.0).
De functie levert een lijst van lijsten $$w$$ op, waarbij elke lijst een wortel van het argument
voorstelt. Alle wortels $$w$$ zijn verschillend. De lijst van wortels is willekeurig geordend.
Als startpunt krijg je de recursieve functie prefix_lijst()
:
def prefix_lijst(i, l): if len(l) == 0: return [] else: return [[i] + l[0]] + prefix_lijst(i, l[1:])Deze functie heeft twee argumenten. Het tweede argument ($$l$$) is een lijst van lijsten. De functie voegt het eerste argument $$i$$ vooraan toe aan elk van de lijsten van $$l$$.
prefix_lijst()
, dan moet je die ook indienen.
l = [1, 1] print(lijst_wortels(l)) #[[1.0, 1.0], [1.0, -1.0], [-1.0, 1.0], [-1.0, -1.0]] l = [1, 4, 9] print(lijst_wortels(l)) #[[1.0, 2.0, 3.0], [1.0, 2.0, -3.0], [1.0, -2.0, 3.0], [1.0, -2.0, -3.0], [-1.0, 2.0, 3.0], [-1.0, 2.0, -3.0], [-1.0, -2.0, 3.0], [-1.0, -2.0, -3.0]]