Information

Author(s) Sam Pieters
Deadline No deadline
Submission limit No limitation

Sign in

Recursie


Question 1: Faculteit!

Schrijf een recursieve functie faculteit die n! uitrekent.

Question 2: Combinatie

Schrijf een recursieve functie combinatie(n,k) die recursief (en zonder gebruik te maken van faculteiten) werkt. Bij combinaties is de volgorde van de elementen niet van belang. Denk eraan dat C(n, k) = C(n−1, k−1) + C(n−1, k) en dat C(n, 0) = C(n, n) = 1.

Question 3: Recursieve som

Schrijf een functie som(n) die recursief de som van 1 t.e.m. n berekent.

Question 4: De rest

Schrijf een functie rest(x, a) die de rest berekent bij de deling van x door a met x en a natuurlijke getallen en a verschillend van 0. Doe dit recursief zonder gebruik te maken van de operatoren %, / of // en zonder de conversie naar integer. Denk eraan dat rest(x,a) = rest(x-a,a).

Question 5: Aantal cijfers

Schrijf een recursieve functie aantal_cijfers die een integer krijgt (positief of negatief) en het aantal cijfers teruggeeft.

Question 6: Het minimum

Schrijf een recursieve functie minimum die het kleinste getal in een geneste lijst teruggeeft. Je mag er vanuit gaan dat er geen lege lijsten of sublijsten voorkomen. Je kan nakijken of een variabele een list is door isinstance() te gebruiken als volgt:

>>> isinstance([],list)
True
>>> isinstance(5,list)
False

De output ziet er dan zo uit:

>>> minimum([2, 9, [1, 13], 8, 6])
1
>>> minimum([2, [[100, 1], 90], [10, 13], 8, 6])
1
>>> minimum([2, [[13, -7], 90], [1, 100], 8, 6])
-7
>>> minimum([[[-13, 7], 90], 2, [1, 100], 8, 6])
-13
Question 7: Tellen

Schrijf een recursieve functie tel(x,l) die teruggeeft hoeveel keer x in de geneste lijst l voorkomt.

Question 8: Geneste lijst naar 1 lijst

Schrijf een functie flatten die een geneste lijst omzet naar een gewone lijst met dezelfde items in dezelfde volgorde. Merk op dat je lijsten kan samenvoegen met de + operator.