Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Rekursionen Erstellt von J. Rudolf im November 2001 /

Ähnliche Präsentationen


Präsentation zum Thema: "Rekursionen Erstellt von J. Rudolf im November 2001 /"—  Präsentation transkript:

1 Rekursionen Erstellt von J. Rudolf im November 2001 j.rudolf@web.dej.rudolf@web.de / www.rudolf-web.dewww.rudolf-web.de

2 Themengebiete 1.Was ist eine Rekursion? 2.Lineare Rekursion: Beispiel 3.Struktur einer lin. Rekursion 4.Übung 5.Lösung zu einer Übung

3 1. Was ist eine Rekursion? Eine Funktion kann nicht nur eine andere Funktion aufrufen sondern auch sich selbst. Dabei wird eine Abbruchbedingung benötigt (um einen Endlos-Aufruf zu verhindern, bei dem der Stack überläuft und zu einer Fehlermeldung führt) ist ein sehr komfortables Programmierkonzept!!!!! Bei einer lineare Rekursion: einfacher Selbstaufruf Es gibt auch zwei oder mehrfachen Selbstaufruf

4 2. Lin. Rekursion: Beispiel Rekursive Definition der Fakultätsfunktion n! = n * (n-1)! und 1!=1 function fac(n:integer):integer; Begin If n=1 Then result:=1 else result:= n*fac(n-1); end; Mit dem Aufruf fac(3) wird so gerechnet: fac(3)=3 * fac(2) -> 2 * fac(1) -> 1 fac(3) ruft fac(2) auf, dieses fac(1) Nun Abbruch (da n=1): also fac(1)=1 Nun wird alles rückwärts multipliziert: fac(3) = 3 * 2 * 1 = 6

5 3. Struktur einer lin. Rekursion Procedure rekursiv; Begin If Then //Rekursionsanfang Else Begin ; //während des Abstiegs rekursiv; //Selbstaufruf ; //während des Aufstiegs End;{else} End;{Procedure}

6 4. Übungen a)Rekursive Berechnung der Summe der ersten n ungeraden Zahlen ( 1 + 3 +... + (2n-1) ) b)Ein wort soll umgedreht werden: trow. c)Eine Zeichenfolge soll als Palindrom (z.B. anna) erkannt werden.

7 5. Lösung zu Übung (b) Procedure wort(Var str:String); Var hilf1,hilf2:string; Begin If length(str)<2 Then // Abbruchbedingung Else begin hilf1:=copy(str,1,1);hilf2:=copy(str,length(str),1); str:=copy(str,2,length(str)-2); wort(str); str:=hilf2+str+hilf1; End;{if} End; procedure TForm1.Button1Click(Sender: TObject); Var drehen:String; begin drehen:=Edit1.text; wort(drehen); edit1.text:=drehen; end;

8 Quellenangabe Baumann, Rüdeger: Informatik für die Sekundarstufe 2. Klett


Herunterladen ppt "Rekursionen Erstellt von J. Rudolf im November 2001 /"

Ähnliche Präsentationen


Google-Anzeigen