Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Rekursion 2.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive.

Lignende præsentationer


Præsentationer af emnet: "Rekursion 2.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive."— Præsentationens transcript:

1 Rekursion 2

2  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive funktioner, herunder superTriangle og fibonacci-funktionen. Vi skal nu se nærmere på rekursion som en problem- løsningsteknik, og specielt skal vi se nærmere på skabe- lonen del, løs og kombinér som indfanger en stor klasse af rekursive algoritmer. Først skal vi imidlertid hjælpe en flok munke med deres livsopgave...

3  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.3 Verdens centrum 64 skiver skal flyttes fra A til C via B. En ad gangen og aldrig en større oven på en mindre. BAC

4  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.4 Simpelt tilfælde BACBAC

5  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.5 Hvad med to? BACBAC BACBAC

6  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.6 Og tre? BACBAC BACBAC A,C A,BC,B

7  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.7 Tre, fortsat BACBAC BACBAC B,A B,CA,C

8  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.8 Hvad med fem eller ti? BAC BAC

9  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.9 Den gode idé BACBAC BACBAC

10  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.10 Algoritmen Flyt (5, A, C): Flyt(4, A, B) Flyt(1, A, C) Flyt(4, B, C) 5,A,C 4,A,B4,B,C 1,A,C Flyt (N, A, C): Flyt(N-1, A, B) Flyt(1, A, C) Flyt(N-1, B, C) N,A,C N-1,A,BN-1,B,C 1,A,C

11  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.11 Og i Java void flyt(int n, int s, int d, int t) { // pre: n >= 1 // post: der er udskrevet hvordan man flytter // n skiver fra s til d via t // s: source, d: destination, t: temporary if ( n==1 ) { System.out.println(s + ” -> “ + d); } else { flyt(n-1, s, t, d); flyt(1, s, d, t, 0); flyt(n-1, t, d, s); }

12  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.12 Output for n=5 1 -> 3 1 -> 2 3 -> 2 1 -> 3 2 -> 1 2 -> 3 1 -> 3 1 -> 2 3 -> 2 3 -> 1 2 -> 1 3 -> 2 1 -> 3 1 -> 2 3 -> 2 2 -> 1 2 -> 3 1 -> 3 2 -> 1 3 -> 2 3 -> 1 2 -> 1 2 -> 3 1 -> 3 1 -> 2 3 -> 2 1 -> 3 2 -> 1 2 -> 3 1 -> 3

13  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.13 n # flytninger 1 1 2 3 3 7 4 15 5 31...... n ? Hvor mange flytninger?

14  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.14 Hvor meget printerpapir? 2 64 - 1  1,845 x 10 19 60 linier pr. kolonne 5 kolonner pr. side 2 sider pr. ark 2500 ark pr. kasse (25 x 40 x 40 cm 3 ) 50 kasser pr. m 2...


Download ppt "Rekursion 2.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive."

Lignende præsentationer


Annoncer fra Google