AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fibonacci-Zahlen (iterativ)

Ein Thema von Piwi · begonnen am 29. Nov 2003 · letzter Beitrag vom 18. Sep 2007
Antwort Antwort
Seite 2 von 2     12   
Illuminator-23-5
(Gast)

n/a Beiträge
 
#11

Re: Fibonacci-Zahlen (iterativ)

  Alt 30. Nov 2003, 18:27
fibonacci geht meiner meinung so am einfachsten:
Delphi-Quellcode:
var
  alt, uralt, neu, i: integer;
begin
  alt := 0;
  neu := 1;
  for i := 2 to j do begin
    uralt := alt;
    alt := neu;
    neu := uralt + alt;
  end;
  return neu;
und das am schnellsten:
Delphi-Quellcode:
var
  a, b, c, d, n, r: integer;
begin
  n := StrToInt(Edit1.Text);
  asm
    MOV a, EAX
    MOV b, EBX
    MOV c, ECX
    MOV d, EDX

    MOV EDX, n
    SUB EDX, 1
    MOV EAX, 0 //alt
    MOV EBX, 1 //neu
    JZ @@end
    @@1:
    MOV ECX, EAX
    MOV EAX, EBX
    MOV EBX, EAX
    ADD EBX, ECX
    SUB EDX, 1
    CMP EDX, 1
    JAE @@1
    @@end:
    MOV r, EBX

    MOV EAX, a
    MOV EBX, b
    MOV ECX, c
    MOV EDX, d
  end;
  return r;
  Mit Zitat antworten Zitat
Benutzerbild von Freekill
Freekill

Registriert seit: 18. Sep 2007
1 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Fibonacci-Zahlen (iterativ)

  Alt 18. Sep 2007, 17:12
Zitat von Piwi:
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!
Auch wenn der letzte Beitrag hier schon eine ganze Weile her ist, wage ich es den Quelltext für zukünftige Besucher zu korrigieren. Die Abbruchbedingung für die Repeat-Schleife stimmt nicht ganz. Ich musste im Rahmen des Informatiksunterricht selbst die Fibonaccizahlen Iterativ programmieren. Dabei ist mir bei dieser Variante aufgefallen, dass die Abbruchbedingung nicht "until i=(n-1)" sondern "until i=(n-2)" heißen muss. Ansonsten verschieben sich die Zahlen um eine Stelle nach vorn und die Reihe stimmt nicht mehr.
  Mit Zitat antworten Zitat
pstruh
(Gast)

n/a Beiträge
 
#13

Re: Fibonacci-Zahlen (iterativ)

  Alt 18. Sep 2007, 17:15
Hallo
erstaunlich, dass überhaupt ein Ergebnis kommt. Wo wird denn das Funktionsergebnis zugewiesen???
Gruß
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Fibonacci-Zahlen (iterativ)

  Alt 18. Sep 2007, 17:32
Es gibt übrigens auch eine Funktion zum Berechnen der Fibonacci-Zahlen:

Im Anhang die Formel als JPG-Bild!

Damit sollte sich das Problem vielleicht auch hinkriegen lassen!

P@Tti

EDIT 1: Okay, der erste Beitrag ist von 2003...
EDIT 2: @pstruh: Das wird wahrscheinlich der Grund sein, warum er immer ne hohe Zahl als Ergebnis bekommen hat, selbst bei n=1
Miniaturansicht angehängter Grafiken
fibonacci_formel_689.jpg  
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#15

Re: Fibonacci-Zahlen (iterativ)

  Alt 18. Sep 2007, 23:53
schau mal hier

http://www.delphipraxis.net/internal...ct.php?t=51660
http://www.delphipraxis.net/internal...ight=fibonacci

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz