För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)

Slides:



Advertisements
Liknande presentationer
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Advertisements

Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Algoritmer och data strukturer -Länkade listor
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Algoritmer och datastrukturer
Programmeringsteknik K och Media
Att programmera i språket Java
Algoritm analys och rekursiva metoder kap 5,7
i olika programmeringsspråk
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Variabler: Datatyp - grundläggande : int, double, char, boolean eller
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
Namnrum, räckvidd och rekursion Linda Mannila
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
TILLÄMPAD DATALOGI (TILDA) Övning 3
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
Karl-Henrik Hagdahl, 11 november Repetition Logikprogrammering: måndag 11 november 2002.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer Sorterings algoritmer.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
Algoritmer och loopar Algoritmer, beräkningsbarhet
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Algoritmer och datastrukturer Föreläsning 8 Tidskomplexitet (Weiss kap
Föreläsning 11: Rekursion
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Algoritmer och datastrukturer,förel. 10
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)

För utveckling av verksamhet, produkter och livskvalitet. Rekursion ?  En rekursiv metod är en metod som anropar sig själv.  Liknar loopar / iterationer  Rekursion är ett sätt att lösa ett problem genom att dela problemmet i flera identiska men mindre subproblem, dvs. metoden anropar sig själv med ” ett mindre argument”. Summan av n

För utveckling av verksamhet, produkter och livskvalitet. Exempel public static int sumOf(int n) { if(n==1) return 1; else return sumOf(n-1) +n; } !! basfall Se till att den rekursiva anropet alltid leder till basfallet

För utveckling av verksamhet, produkter och livskvalitet. Det största gemensamma divisorn (greatest common divisor) tilllämpas i krypteringsalgoritmer public static long gcd (long a,long b) { if(b==0) return a; else if(a>=b) return gcd(a-b,b); else return gcd(b,a); } public static long gcd(long a,long b) { if(b==0) return a; else return gcd(b,a%b); }

För utveckling av verksamhet, produkter och livskvalitet. En enkel lösning till ett komplicerat problem ”the towers of Hanoi ” En grupp munkar på 1800 talet fick i uppdrag att flytta 64 skivor guld (med olika diameter) från ett torn till ett annat. När arbetet var klart skulle jorden gå under. Följande regler skulle följas: 1)Flytta en disk i taget 2)Ingen skiva med större diameter får ligga över en med mindre. 3)En temporärt torn kan användas så länge regel 1och 2 följs. Hur lång tid tar det att slutföra arbetet om det tar 1 min för varje flytt?

För utveckling av verksamhet, produkter och livskvalitet. Towers of Hanoi, lösning

För utveckling av verksamhet, produkter och livskvalitet. Implementation void hanoi(int n, char from, char to, char h){ if(n>0){ hanoi(n-1,from,h,to); System.out.println(from+" --> "+to); hanoi(n-1,h,to,from); }

För utveckling av verksamhet, produkter och livskvalitet. En dålig lösning till ett enkelt problem På talet hittar Leonardo Fibonacci en sekvens av tal för att modelera antalet avkommer från ett kanin par F0=1 F1=1 F2=2 F3=3 F4=5 Fn=Fn-1+Fn-2

För utveckling av verksamhet, produkter och livskvalitet. Rekursiv algoritm för fibonacci int fibonacci(n) { if(n==0)|| (n==1) return 1 else return fibonacci(n-1)+fibonacci(n-2) } Tidskomplexitet

För utveckling av verksamhet, produkter och livskvalitet. Dinamisk programmering Princip: Beräkna ny värde genom att använda de senaste beräknade värde public static int fibonacci (int n) { if(n<=1) return 1; else { int first=1; int next=1;int fibTal=0; for (int i=1;i<n;i++) { fibTal=first+next; first=next; next=fibTal; } return fibTal; }