Ö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.

 

  1. 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', '?']

     

  2. Förbättra den ineffektiva rekursiva funktionen fulfib. Koden finns här: fulfib.py. Den stora nackdelen med fulfib ä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.

     

  3. Beräkna binomialkoefficienter. Gör en lösning som utnyttjar redan beräknade koeffienter och alltså inte orsakar en "lavin" av onödiga funktionsanrop.

     

  4. Svår: Sista uppgiften på övning 4 (som konstruerar permutationer), om ni inte redan gjort den.

     

  5. 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.

 Marcus exempel