// Die Fibonacci-Folge ist eine mathematische Folge nichtnegativer ganzer
// Zahlen unter folgenden Bedingungen:
// * Für die ersten beiden Zahlen werden die Werte Null und Eins vorgegeben.
// * Jede weitere Zahl ist die Summe ihrer beiden Vorgänger.

// Daraus ergibt sich die Folge
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 ...

// Im folgenden kann man eine Reihe von 88 Zahlen erzeugen
(Danach werden
// die Zahlen in wissenschaftlicher Notation zurückgegeben. Um das zu
// umgehen, könnte man "ExtendedToString" verwenden).


// Getestet mit D4 unter XP

type 
  m = 1..88; 
 
procedure fibonacci(von, bis: m; st: TStrings); 
var 
  e1, e2: extended; 
  a: integer; 
  procedure dazu(ex: extended); 
  begin 
    if succ(a) >= von then 
      st.add(FormatFloat('#,##0', ex)); 
  //  st.add(ExtendedToString(ex, true)); 
    inc(a); 
  end; 
begin 
  if von > bis then 
    raise exception.create('"von" darf nicht größer als "bis" sein!'); 
  a := 0; 
  e1 := 0; 
  e2 := 1; 
  dazu(e1); 
  if a = bis then exit; 
  dazu(e2); 
  while a < bis do begin 
    e1 := e1 + e2; 
    dazu(e1); 
    if a = bis then break; 
    e2 := e1 + e2; 
    dazu(e2); 
  end; 
end; 
 
// Beispielaufruf für die ersten 30 Zahlen 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Memo1.Clear; 
  fibonacci(1, 30, Memo1.Lines); 
end; 
 
// Beispielaufruf für die 10. bis 15. Zahl 
 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
  Memo1.Clear; 
  fibonacci(10, 15, Memo1.Lines); 
end;



 

Zugriffe seit 6.9.2001 auf Delphi-Ecke