home *** CD-ROM | disk | FTP | other *** search
-
- { Copyright (c) 1985, 87 by Borland International, Inc. }
-
- {$N+}
- program Fib8087;
- {
- Beispielprogramm zu Kapitel 24 des Referenzhandbuchs - demonstriert
- rekursive Programmierung ohne Überlauf des 8087-Rechenstack.
- **********************************************************************
- * HINWEIS: Dieses Programm erfordert einen numerischen Coprozessor! *
- **********************************************************************
-
- }
-
- var
- i : Integer;
-
- function Fib(N : Integer) : Extended;
- { Berechnet die Fibonacci-Folge für N }
- var
- F1, F2 : Extended; { lokale Variablen auf dem Stack des 8086(!) }
- begin
- if N = 0 then Fib := 0.0
- else if N = 1 then Fib := 1.0
- else
- begin
- F1 := Fib(N - 1); { Ergebnisse werden in lokalen Variablen }
- F2 := Fib(N - 2); { gespeichert - und damit auf dem Stack }
- Fib := F1 + F2; { des 8086 }
- end;
- { Der direkte rekursive Aufruf von der Funktion Fib mit
- Fib := Fib(N - 1) + Fib(N - 2);
- würde für N > 8 einen Überlauf des 8087-Rechenstack
- erzeugen, weil bei jeder Rekursion ein weiteres
- Zwischenergebnis gespeichert werden muß }
- end; { Fib }
-
- begin
- for i := 0 to 15 do
- Writeln(i, '. ', Fib(i):10:0);
- end.