Rekursiva algoritmer, en annan sort tänkande

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

description

Rekursiva algoritmer, en annan sort tänkande. Hur När Bra/Dåligt (kap 7). Rekursion ?. En rekursiv metod är en metod som anropar sig själv. Liknar loopar / iterationer - PowerPoint PPT Presentation

Transcript of Rekursiva algoritmer, en annan sort tänkande

Page 1: Rekursiva algoritmer,  en annan sort tänkande

För utveckling av verksamhet, produkter och livskvalitet.

Rekursiva algoritmer, en annan sort tänkande

-Hur -När-Bra/Dåligt(kap 7)

Page 2: Rekursiva algoritmer,  en annan sort tänkande

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 1+2+3+4+5 + ......+n

Page 3: Rekursiva algoritmer,  en annan sort tänkande

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 rekursivaanropet alltid leder till basfallet

Page 4: Rekursiva algoritmer,  en annan sort tänkande

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

Page 5: Rekursiva algoritmer,  en annan sort tänkande

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 taget2) 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?

Page 6: Rekursiva algoritmer,  en annan sort tänkande

För utveckling av verksamhet, produkter och livskvalitet.

Towers of Hanoi , lösning

Page 7: Rekursiva algoritmer,  en annan sort tänkande

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

Page 8: Rekursiva algoritmer,  en annan sort tänkande

För utveckling av verksamhet, produkter och livskvalitet.

En dålig lösning till ett enkelt problem

På 1300- talet hittar Leonardo Fibonacci en sekvens av tal för att modelera antalet avkommer från ett kanin par.

1 1 2 3 5 8 13 ........ F0=1 F1=1F2=2F3=3F4=5Fn=Fn-1+Fn-2

Page 9: Rekursiva algoritmer,  en annan sort tänkande

För utveckling av verksamhet, produkter och livskvalitet.

Rekursiv algoritm för fibonacci

int fibonacci(n){ if(n==0)|| (n==1) return 1else return fibonacci(n-1)+fibonacci(n-2)}

Tidskomplexitet

Page 10: Rekursiva algoritmer,  en annan sort tänkande

För utveckling av verksamhet, produkter och livskvalitet.

Dinamisk programmeringPrincip: 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;}