Övning 5: Svårare rekursioner och lite filhantering.
Innehåll: Läs från fil, svårare rekursionsexempel än förra övningen.
Förslag på uppgifter som passar på övningen:
Assistenterna kan hoppa över uppgifter och/eller välja andra uppgifter.
- Visa hur man kan läsa en textfil med ett ord per rad och få orden som en lista i sitt program. Alltså om filen är textfil så ska listan bli
['Vad', 'tror', 'du', 'att', 'det', 'hände', 'sen', '?']
- Förbättra den ineffektiva rekursiva funktionen
fulfib
. Koden finns här: fulfib.py. Den stora nackdelen medfulfib
är att den inte utnyttjar redan utförda beräkningar. Komplettera funktionen så att redan beräknade Fibonaccital sparas t.ex. i en dictionary (uppslagslista) och värdena återanvänds. Då behöver funktionen inte heta "fulfib" längre. -
Beräkna binomialkoefficienter. Gör en lösning som utnyttjar redan beräknade koeffienter och alltså inte orsakar en "lavin" av onödiga funktionsanrop.
-
Svår: Sista uppgiften på övning 4 (som konstruerar permutationer), om ni inte redan gjort den.
-
Svår: Räkna antalet nästlade listnivåer i en lista, dvs i hur många nivåer listor i listor i listor .... som förekommer. Alla icke-listor ger 0 som funktionsvärde, t.ex.
5 -> 0, [3,4,-1] --> 1, [3,[4,-3],-9] --> 2
o.s.v.