Rekursion. En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.

Slides:



Advertisements
Liknande presentationer
Visual Basic - Genomgång
Advertisements

Talföljder formler och summor
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Datavetenskap för teknisk kemi 10p, moment 1
Funktioner och programorganisation
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
2D1311 Programmeringsteknik med PBL
Prolog, Mån 16/9 Rebecca Jonson.
Programmeringsteknik
För utveckling av verksamhet, produkter och livskvalitet. Rekursiva algoritmer, en annan sort tänkande -Hur -När -Bra/Dåligt (kap 7)
Malin Junerfält Mitt Syslöjdsarbete.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - Lite mer rekursivitet -Sorterrings algoritmer -- Kapitel 8 Algoritmer.
Algoritmer och datastrukturer
Föreläsning 2. Operatorer Tilldelning Kodblock { } if – satsen Logiska uttryck Att programmera.
Abstract & sealed.
Programmeringsteknik för K och Media
Växjö 22 april -04Språk & logik: Parsning med kontextfria grammatiker1 DAB760:Språk och logik: 22 aprilParsning Leif Grönqvist
Programmering B PHP Lektion 2
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
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
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmering B PHP Lektion 3
int res2=Math.max(tal1,tal2);
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
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.
Rekursiva algoritmer Hur När Bra/Dåligt (kap 7).
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.
Riktade listor i C och Java Lösning till gruppövning 1.
Namnrum, räckvidd och rekursion Linda Mannila
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
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.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Undantag - eng. Exceptions Viktig del av klassbiblioteksdesign “Hoppa direkt ut med felkod” class.
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.
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öreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
1 Objektorienterad programmering för ingenjörer, VT04 Kort repetition av C-programmering och nyttiga verktyg. Tomas Larsson B439.
Programmeringsteknik
TILLÄMPAD DATALOGI (TILDA) Övning 2
TILLÄMPAD DATALOGI (TILDA) Övning 2
William Sandqvist Är Du bra på for-loopar? Ge triangelns höjd: 12 1> * > *** > *****
Anders Sjögren Data (i primärminnet) som en länkad lista datatypen för varje element i listan är en struktur, post ( struct )
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Anders Sjögren Enkelt program med funktion /* two_func.c - a program that uses two functions in one file */ /* from Stephen Prata C Primer Plus ISBN
Karlstads universitet Datavetenskap DAVA07/08 JE,MG,MG,PS Kontraktsprogrammering.
Algoritmer och loopar Algoritmer, beräkningsbarhet
Anders Sjögren Funktioner något in och något annat ut.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Föreläsning 11: Rekursion
Snåla algoritmer Backtracking
Algoritmer och datastrukturer,förel. 10
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

Rekursion

En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv.

Rekursion En metoddefinition som innehåller ett anrop av sig själv kallas rekursiv. För att kunna använda rekursion behöver man: Ett problem som innehåller ett eller flera liknande delproblem Ett basfall som kan lösas utan rekursion Ett sätt att göra problemet enklare så att det närmar sig, och slutgiltigen når basfallet

Rekursion Ett exempel: N Σ i i=1

Rekursion Ett exempel: N N-1 Σ i = N + Σ i i=1 i=1

Rekursion Ett exempel: N N-1 N-2 Σ i = N + Σ i = N + N-1 + Σ i =... i=1 i=1 i=1

Rekursion Ett exempel: N N-1 N-2 Σ i = N + Σ i = N + N-1 + Σ i = i=1 i=1 i=1 = N + N-1 + N

Rekursion Ett problem som innehåller ett eller flera liknande delproblem Ett basfall som kan lösas utan rekursion Ett sätt att göra problemet enklare så att det närmar sig, och slutgiltigen når basfallet

Rekursion Ett exempel: N N-1 Σ i = N + Σ i = N + N i=1 i=1 Basfall: om N=1 blir summan = 1 Annars: summan(N) = N + summan(N-1)

Rekursion Basfall: om N=1 blir summan = 1 Annars: summan(N) = N + summan(N-1) public int sum(int n) { if (n==1) return 1; else return n + sum(n-1); }

Rekursion Vad händer om man tar bort basfallet? public int sum(int n) { //if (n==1) // return 1; // else return n + sum(n-1); }

Rekursion main: sum(3); sum sum(2); sum sum(1); sum Resultat = 1 Resultat = 3 Resultat = 6

Rekursion och loop public int sum(int n) { if (n==1) return 1; else return n + sum(n-1); } public int sumLoop(int n) { int sum = 0; for (int i =1; i<=n; i++) { sum = sum + i; } return sum; } Tiden är i båda fallen proportionell mot n

Rekursion Övningar: Vad kommer att skrivas ut om metoderna visa anropas med argumentet 0? public static void visa1(int tal) { if (tal < 10) visa1(tal + 1); else System.out.println(tal); } public static void visa2(int tal) { System.out.println(tal); if (tal < 10) visa2(tal + 1); }