Rekursion Flashcards

1
Q

Vad ändras i version 2 av “Hello World” för att undvika oändlig rekursion?

A

I version 2 läggs ett termineringsvillkor till som stoppar rekursionen när n blir 0, vilket gör att funktionen slutar anropa sig själv efter ett visst antal gånger. “Hello World” skrivs ut fyra gånger (från 4 till 1) innan funktionen avslutas, vilket visar att rekursionen nu har ett korrekt termineringsvillkor.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Vad är rekursion?

A

Rekursion är en teknik där en funktion anropar sig själv för att lösa ett problem. Den bygger på principen “divide and conquer” där ett stort problem bryts ner i mindre delar som är enklare att lösa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Vad är ett termineringsvillkor i rekursion?

A

Ett termineringsvillkor är ett tillstånd där den rekursiva funktionen slutar att anropa sig själv. Detta är nödvändigt för att undvika oändliga loopar och säkerställa att funktionen avslutas korrekt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Vad händer i rekursiv “Hello World” (version 1)?

A

Funktionen write_string anropar sig själv utan ett termineringsvillkor, vilket resulterar i ett oändligt antal anrop tills Python kastar ett felmeddelande om att maxdjupet för rekursion har överskridits. Resultatet är att “Hello World” skrivs ut ett stort antal gånger (995 gånger) innan programmet kraschar med ett felmeddelande på grund av för många rekursiva anrop.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hur fungerar version 3 av “Hello World” rekursivt?

A

I version 3 anropas funktionen write_string först rekursivt innan utskriften sker, vilket resulterar i att “Hello World” skrivs ut i omvänd ordning (från 1 till 4). “Hello World” skrivs ut i omvänd ordning, från 1 till 4, vilket visar effekten av att skriva ut meddelandet efter det rekursiva anropet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vad gör funktionen fact(n) i exemplet med rekursion?

A

Funktionen fact(n) beräknar fakulteten av n genom att anropa sig själv rekursivt. Om n är större än eller lika med 1, multiplicerar den n med fact(n-1) tills den når 1. Om n är 0 eller 1, returnerar den 1 direkt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vad är termineringsvillkoret i fact(n)-funktionen?

A

Termineringsvillkoret är när n är 0 eller 1. I det fallet returnerar funktionen 1 och stoppar den rekursiva anropningen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Vad är resultatet av att köra fact(5)?

A

Resultatet är 120 eftersom 5! = 5 × 4 × 3 × 2 × 1 = 120.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Hur fungerar den rekursiva funktionen för att skriva ut en sträng baklänges?

A

Funktionen writeRecursive(s, n) anropar sig själv för att flytta till slutet av strängen och skriver sedan ut varje tecken på vägen tillbaka genom anropen, vilket gör att strängen skrivs ut baklänges.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Vad blir resultatet av att köra writeRecursive(“Hello”, 0)?

A

Resultatet är att “Hello” skrivs ut baklänges som “olleH”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Vad är termineringsvillkoret i writeRecursive(s, n)?

A

Termineringsvillkoret är när n är lika med längden på strängen. Då slutar funktionen att anropa sig själv.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Hur fungerar den rekursiva funktionen för att hitta alla delsträngar?

A

Funktionen find_all(substr, s) letar efter en delsträng i en sträng, och om den hittar en match, anropar den sig själv med resten av strängen. Varje gång den hittar en match, returnerar den 1 och lägger till det rekursiva resultatet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Vad är termineringsvillkoret i find_all(substr, s)?

A

Termineringsvillkoret är när delsträngen inte längre finns i strängen (dvs. result == -1). Då returnerar funktionen 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Vad är resultatet av att köra find_all(‘doo’, ‘doo bee doo bee doo’)?

A

Resultatet är 3 eftersom “doo” förekommer tre gånger i strängen “doo bee doo bee doo”.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
A
16
Q
A
17
Q
A
18
Q
A
19
Q
A