Programmering 1

REKURSION

  • En rekursiv funktion är en funktion som anropar sig själv
  • Ett alternativ till loopar: Vissa problem löses bättre rekursivt!
  • En rekursiv lösning kan ge en enkel lösning till annars svåra problem
  • Ordet rekursiv kommer från latinet recurrere = "springa tillbaka"

Rekursion

Hur?

En rekursiv metod måste ha ett basfall som talar om när algoritmen är klar.

Metoden anropar sig själv tills den når basfallet.

def countDown(n):
 """Rekursiv funktion som räknar ner"""
    print(n)
    if(n <= 1):
        return
    else:
        countDown(n-1)

print(countDown(5))

Exempel: Beräkna talsumma med rekursion

Exempel: Talsumman för 4 = 4 + 3 + 2+ 1

s(1) = 1                                           

s(2) = 2 + 1                                  = 2 + s(1)

s(3) = 3 + 2 + 1                            = 3 + s(2)

s(4) = 4 + 3 + 2 + 1                      = 4 + s(3)

.....

s(n) = n + s(n-1)

En rekursiv definition till ett problem innehåller basfallet och hur problemet kan lösas genom ett eller flera mindre delproblem

Exempel: Beräkna talsumma med rekursion

Fråga att ställa sig själv: Vad är summan av de n första positiva heltalen?

Rekursivt svar: Summan av de n första positiva talen är n plus summan av                                de n - 1 första heltalen!

Tänka rekursivt

Kodexempel på rekursion av talsumma

def talsumma(n):
    """Rekursiv funktion som beräknar talsumman av n"""
    if(n <= 1):
        return 1
    else:
        return n + talsumma(n-1)

print(talsumma(4))

Exempel på hur rekursion fungerar

n = 4

anropa talsumma(3)

n = 3

anropa talsumma(2)

n = 2

anropa talsumma(1)

n = 1

return 1

return 2 + 1 = 2

return 3 + 2 = 5

return 4 + 5 = 9

Start

Made with Slides.com