Pagina anteriorIndiceProxima pagina

Algoritmos Computacionais

9.6 Recursão

Program TEST_REC;
Var
 X,Y:integer;

Function MDC (P1, P2: integer): integer;
 Begin
  If  P2 = 0 Then
   MDC: = P1
  Else 
   MDC: = MDC (P2, P1 mod P2);
 End;  {de MDC }

Function FAT (N: integer): integer;
 Begin
  If N>0 Then
     FAT: = 1
 End; { de FAT }
  X:= MDC(25,5);
  Y:= FAT(5);
End. {de TEST_REC}

Program FIBONACCI;
{fornece o termo da série dada sua ordem}
Var
   ORDEM: integer;

Function FIB (N: integer): integer;
Begin
 If  N>1  Then
    FIB: = FIB (N – 1) + FIB (N – 1 )
 Else
    If  N = 1 Then
       FIB: = 1
    Else
       FIB: = 0;
End; { de FIB }

Begin { de Principal }
 Writeln (‘entre com a ordem’);
 Readln ( ORDEM );
 Writeln (‘o numero é’, FIB(ORDEM));
End. { de FIBONACCI }
 

Uma solução não recursiva para Fibonacci é a seguinte (repare como a solução recursiva é muito mais elegante):
 
Program FIBONACCI;
Var 
 PROX, TERM1, TERM2, I, N: integer;

Begin
 Read ( N );
 PROX: = 1;
 TERM1: = 1;
 TERM2: = 0;
 For I: = 1 to N do
  Begin
   Writeln (PROX);
   PROX: = TERM1 + TERM2;
   TERM2: = TERM1;
   TERM1: = PROX;
  End
End. { de FIBONACCI }


Pagina anteriorIndiceProxima pagina

araujo@eng.uerj.br