home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / turbo4 / fib8087.pas < prev    next >
Pascal/Delphi Source File  |  1987-12-08  |  1KB  |  42 lines

  1.  
  2. {           Copyright (c) 1985, 87 by Borland International, Inc.            }
  3.  
  4. {$N+}
  5. program Fib8087;
  6. {
  7.   Beispielprogramm zu Kapitel 24 des Referenzhandbuchs - demonstriert
  8.   rekursive Programmierung ohne Überlauf des 8087-Rechenstack.
  9. **********************************************************************
  10. * HINWEIS: Dieses Programm erfordert einen numerischen Coprozessor!  *
  11. **********************************************************************
  12.  
  13. }
  14.  
  15. var
  16.   i : Integer;
  17.  
  18. function Fib(N : Integer) : Extended;
  19. { Berechnet die Fibonacci-Folge für N }
  20. var
  21.   F1, F2 : Extended;  { lokale Variablen auf dem Stack des 8086(!) }
  22. begin
  23.   if N = 0 then Fib := 0.0
  24.   else if N = 1 then Fib := 1.0
  25.     else
  26.     begin
  27.       F1 := Fib(N - 1);         { Ergebnisse werden in lokalen Variablen }
  28.       F2 := Fib(N - 2);         { gespeichert - und damit auf dem Stack }
  29.       Fib := F1 + F2;           { des 8086 }
  30.     end;
  31.                     { Der direkte rekursive Aufruf von der Funktion Fib mit
  32.                       Fib := Fib(N - 1) + Fib(N - 2);
  33.                       würde für N > 8 einen Überlauf des 8087-Rechenstack
  34.                       erzeugen, weil bei jeder Rekursion ein weiteres
  35.                       Zwischenergebnis gespeichert werden muß }
  36. end; { Fib }
  37.  
  38. begin
  39.   for i := 0 to 15 do
  40.     Writeln(i, '. ', Fib(i):10:0);
  41. end.
  42.