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

  1. Rita trianglarna i labb2 med rekursion. Skriv alltså en funktion
    triangel_bas_upp(dist, bredd) som ritar en triangel med asterisker. 
    Anropet triangel_bas_ner(1, 7) ska ge
     *******
      *****
       ***
        *
    
    Skriv också     triangel_bas_ner(dist, bredd) 
    Anropet triangel_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

     

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

     

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

     

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

     

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