Hallo Delphi-Gemeinde,
ich habe in diesem Programmtext irgend einen Denkfehler drin, der mir nicht auffallen will. Es geht darum, die Fibonacci-Zahl an der Stelle n in der Fibonacci-Reihe darzustellen.
Fibonacci-Zahlen
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
Die nächste Zahl in der Reihe ergibt sich also immer aus der Summe seiner beiden Vorgänger. Rekursiv ist das ganze relativ einfach darzustellen, iterativ wohl auch, aber dort ist ein Denkfehler in meinem Programmtext:
Delphi-Quellcode:
function TForm1.fibonit(n:integer):integer;
var x,y,z,i:integer;
begin
x:=1;
y:=1;
i:=0;
repeat
i:=i+1;
z:=x+y;
y:=x;
x:=z;
until i=(n-1);
end;
procedure TForm1.iterativbuttonClick(Sender: TObject);
var n:integer;
begin
n:=strtoint(edit1.text);
listbox1.items.add(inttostr(fibonit(n)));
end;
Er trägt in die Listbox nach ca. zehnsekündiger Berechnungsphase (!!) eine relativ hohe Zahl ein, selbst wenn ich n=1 wähle. Wo ist der Fehlerteufel?
DANKE IM VORAUS!