PROGRAM fibo(input,output);

{$A-} {Dieser Compiler-Befehl schaltet die Erzeugung eines Absoluten}
      {Codes aus. Dadurch wird Rekursion ermoeglicht. Der Erzeugte Code}
      {wird allerdings laenger, und die Programmausfuehrung langsamer.}

{Dieses Programm berechnet eine fibonaccische Zahl}
{aus ihrer Platznummer in der Fibonacci-Folge}

VAR fibnum:integer;

FUNCTION fib(nummer:integer):integer;
  BEGIN {fib}
    IF nummer>1 THEN
      fib:=fib(nummer-1)+fib(nummer-2)
    ELSE
      IF nummer=1 THEN fib:=1
      ELSE fib:=0
  END;{fib}

BEGIN {fibo}
  REPEAT
    write('geben Sie eine positive Zahl ein: ');
    readln(fibnum)
  UNTIL fibnum>=0;
  writeln('Die Fibonacci-Zahl lautet ',fib(fibnum))
END.{fibo}