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

Slides:



Advertisements
Lignende præsentationer
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
Advertisements

1 Rekursion og algoritmedesign. 2 Rekursion Rekursiv definition af X: X defineres i termer af sig selv. Rekursion er nyttig, når en generel version af.
Videreudvikling af ide 2&2
GP10, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 10 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
1 Nordjyllands Erhvervakademi Lektion 6 Opsamling på opgaver Mere om rekursion: –Del&Hersk –Sortering –Kompleksitet (effektivitet – ”Store O”) Abstrakte.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
Induktion og rekursion
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Klik på nummerne i den rigtige rækkefølge
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Lektion 7 Læsestof: Kopier fra Caranno
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
ET TO TRE FIRE FEM SEKS SYV OTTE NI TI KLIK PÅ MUMRENE I RÆKKEFØLGE.
Quiz 3.1. Quiz 1 – Assignment dIntProg, E14 Hvad er værdierne af x og y efter udførelse af følgende program? 1.x er 6, y er 3 2.x er 8, y er 5 3.x er.
Spec. af LottotalsGenerator interface LottoTal{ // S: mgd. af udtrukne tal // min, max: int - angiver intervallet (incl.) void set(int min, int max); //PRE.
Søgning.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSøgning.2 Søgeproblemer... Søgning efter fil(er) Søgning i databaser.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Klassevariable- og metoder Tilstand og opførsel på klasseniveau.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmering1.1 Turtlemaskinen Arkitektur, instruktionssæt og eksempler.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering5A.1 OOP – Model før funktioner Funktionsorienteret versus objektorienteret systemudvikling.
Sortering.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSortering.2 Sortering Vi hartidligere set at effektiv søgning forudsætter.
Rekursive skildpadder Supertrekanter.....  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursive skildpadder.2 Penta, etc.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmeringAlgebra.1 Algebraiske begreber Tal, sandhedsværdier og figurer.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Jens Bennedsen, 2003Introducerende objektorienteret programmeringinterfaces.1 Interfaces En ren kontrakt.
 Bærbak & Caspersen, 2000 Introducerende objektorienteret programmering4B.1 Talsystemer Positionstalsystemer Decimale og binære tal.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
 Henrik Bærbak, 2000Introducerende objektorienteret programmering11B.1 Destilleret UML Oversættelse fra UML til Java.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7A.1 Rekursion.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14A.1 Del, løs og kombinér.
Frameworks Hændelsesstyret programmering: ”Don’t call us – we’ll call you”
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering10B.1 Interfaces En ren kontrakt.
 Bærbak & Caspersen, 2000Introducerende objektorienteret programmering2B.1 Syntaksbeskrivelse Syntaksdiagrammer og EBNF-notation.
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.1 Sortering.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Klassevariable- og metoder Funktionalitet på klasseniveau.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering6B.1 Rekursive skildpadder Supertrekanter....
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
Sequence En container til heltal.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSequence.2 Datatypen Sequence Oprette Sequence()
I o p o DAIMI, AU, November 1999Introducerende objektorienteret programmering9D.1 Del, løs og kombinér.
Syntaksbeskrivelse Syntaksdiagrammer og EBNF-notation.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering3E.1 Syntaksbeskrivelse Udtryk og Java-programmer.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Objektinteraktion i GUI’er MVC og Observer.  Michael E. Caspersen, 2003Introducerende objektorienteret programmeringmvc.2 AWT framework Listeners og.
 Michael E. Caspersen, 2000 Introducerende objektorienteret programmering4A.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Billedbehandling – processering af digitale billeder.
Del, løs og kombinér Et algoritmemønster.
Skildpadder Modeller, objekter og opførsel.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSkildpadder.2 Model Modeller bruges.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering7B.1 Søgning.
Introduktion til øvelsen ”Bidrag til kerneopgaven” Formål med øvelsen Forberedelse Indledning Runde 1 Runde 2 Runde 3 Afslutning på øvelsen 2.
Blender IT-komponent Blender er et avanceret gratisopen-source program som kan bruges til at fremstille 3D-modeller og animationer. Men for denne præsentation.
Programmering 1 Java/C#
1587 Server - Blandet miljø Webintegrator HF1

Præsentationens transcript:

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

 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

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

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

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

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

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

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

 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

 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); }

 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

 Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.13 n # flytninger n ? Hvor mange flytninger?

 Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.14 Hvor meget printerpapir?  1,845 x 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...