Autor |
Beitrag |
Jasmini
      
Beiträge: 20
Win Millenium
D7
|
Verfasst: Mi 01.06.05 22:57
Aufgaben Stellung:
Zahlenfolge
0,1,1,2,3,5,8,13,21,34
einmal mit 10 Zahlen
dann mit 20 Zahlen
Der Benutzer soll über Buttons entscheiden ob er 10 will oder 20
Ausgegeben wird alles über ein Memo feld!
Ich hab zu meinem Problem mit den Fibonaccizahlen jetzt folgenden Quelltext geschrieben
Der nicht geht !
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button1Click(Sender: TObject); var Anzahl:Integer; begin Anzahl:=10; Memo1.Text:=IntToStr(moeglichkeiten(Anzahl)); end;
function moeglichkeiten(Anzahl:integer):integer; begin case Anzahl of 1:moeglichkeiten:=1; 2:moeglichkeiten:=2; else moeglichkeiten:=moeglichkeiten(Anzahl-1)+moeglichkeiten(Anzahl-2) end; end;
end. |
Moderiert von raziel: Code- durch Delphi-Tags ersetzt.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 01.06.05 23:19
Jetzt aber:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| function moeglichkeiten(Anzahl:integer):integer; begin Assert (Anzahl >= 0,'Anzahl muss >= 0 sein'); If Anzahl <= 1 then Result := Anzahl Else Result := moeglichkeiten(Anzahl-1) + moeglichkeiten(Anzahl-2) end; |
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Mi 01.06.05 23:28
_________________ JSXGraph
|
|
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 02.06.05 10:11
das ist ein typischer Fall von DF-Topic erstellen-> Link erhalten-> Link klicken-> Quelltext kopieren-> Wundern, warums nicht funktioniert (weil kein Wort verstanden bzw. gelesen) 
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 02.06.05 19:56
@raziel: Rekursivität im Unterricht dient nicht dazu, effektiv und schnell zu sein, sondern elegant. Aber, was ich gar nicht mehr verstehe: Was hat die Frage des Threadinitiators mit Hasen zu tun. Oder meinst Du Bunnies (lechz)? 
|
|
raziel
      
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Do 02.06.05 20:00
alzaimar hat folgendes geschrieben: | @raziel: Rekursivität im Unterricht dient nicht dazu, effektiv und schnell zu sein, sondern elegant. Aber, was ich gar nicht mehr verstehe: Was hat die Frage des Threadinitiators mit Hasen zu tun. Oder meinst Du Bunnies (lechz)?  |
Im ersten Posting steht nichts von wegen "Es muss rekursiv implementiert sein"  Hasen deshalb, weil das meist als Beispiel genommen wird: Die Vermehrung von Hasen, unter bestimmten Voraussetzungen.
_________________ JSXGraph
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 02.06.05 20:21
Oh raziel, aber er hat doch eine rekursive Lösung gehabt, die nicht funktionierte, da kann ich ihm doch nicht direkt eine komplett andere Lösung hinschremmeln, nach dem Motto: "Deine Lösung ist sowieso Mist". Ehrlich gesagt finde ich manchmal rekursive Lösungen (z.B. Türme von Hanoi oder Quicksort) im rekursiven Ansatz so elegant, das es einfach schade ist, das durch eine iterative Lösung zu ersetzen.
Ungeachtet dessen MUSS man einfach (so wie Du es correctamente getan hast) darauf hinweisen, das eben rekursive Lösungen i.A. nicht praktikabel sind. Vielleicht ein Thema für einen anderen Thread, oder gleich eine neue Rubrik über "Verfahren allgemein, Ästhetik von Code , Do's and Don'ts of Software Engineering". Da hätten viele etwas von.
Bitte nich mehr schümpfen 
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Do 02.06.05 21:20
Also zum einen: Warum funzt der Code ausm ersten Psoting nicht? Bei mir tut er es ganz gut (bis auf die Tatsache, dass die ersten beiden Zahlen nicht ausgegeben werden, also die Zahlen gegenüber den Fib-Zahlen um 2 verschoben sind.)
@Rekursion: Würde ich auch gerne was zu schreiben, aber dann müsste ich mich selbst ermahnen, wieder zum Thema zurückzukehren. Wenn da noch Diskussionsbedarf besteht: Neuer Thread!
_________________ We are, we were and will not be.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Do 02.06.05 21:41
Gute Frage, er funktioniert fast, aber: 0 ist eine Fibionacci-Zahl, und das kann die Funktion nicht. Ich teste Funktionen / Prozeduren immer über die Grenzwerte bzw. Extrema oder Sonderfälle. Wenn das klappt, siehts für den Rest i.A. gut aus.
Rekursion: Ach, ein neuer Thread wär doch mal was. Hier isser.
www.delphi-forum.de/....php?p=258815#258815
Moderiert von Gausi: DF durch URL-Tags ersetzt. DF ist nur für die DF Suche da 
|
|
|