Övning 4, rekursion
Temat är REKURSION:
Förslag på uppgifter som passar på övningen:
Assistenterna kan välja andra uppgifter och/eller komplettera med fler uppgifter.
- Rita trianglarna i labb2 med rekursion. Skriv alltså en funktion
triangel_bas_upp(dist, bredd)
som ritar en triangel med asterisker.
Anropettriangel_bas_ner(1, 7)
ska ge******* ***** *** *
Skriv ocksåtriangel_bas_ner(dist, bredd)
Anropettriangel_bas_ner(5, 9)
ska ge* *** ***** ******* *********
De två funktionerna bör bli mycket lika varandra. Genom att byta plats på två rader i en av funktionerna så får man den andra! Lösningar: rekursivaTrianglar.py - Beräkna siffersumman för ett heltal. T.ex. så är siffersumman för 571 lika med 5 + 7 + 1 = 13. Lösning: siffsum.py
- Med hjälp av rekursion, tag reda på om elementen i en lista är icke-avtagande, dvs sorterade i stigande ordning. T.ex. är båda listorna [1,1,1,1] och [-4,-3,-2,0,0,1] icke-avtagande. Fler exempel finns i lösningskoden. Lösning: ickeAvtagande.py.
- Beskriv en algoritm för att beräkna x^n rekursivt m.h.a. multiplikationer. n är ett heltal.
Lösning1: potens.py. Lösning2 är listigare: power.py. -
Svår, kan gärna sparas till senare: Konstruera alla permutationer av en lista eller textsträng. T.ex. om man startar med listan [1,2,3] så är permutationerna
[[1, 2, 3], [2, 1, 3], [2, 3, 1], [1, 3, 2], [3, 1, 2], [3, 2, 1]].
Följande lösning fungerar för textsträngar men inte listor: allpermOfString.py
Om indata är 'XYZ' så fås ['XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX'].
Alla uppgifter finns lösta i en utvecklingskatalog (githubrepo).