All pastes #961210 Raw Edit

Anonymous

public text v1 · immutable
#961210 ·published 2008-03-28 19:15 UTC
rendered paste body
//Função Normal Clássica

Function Fibonacci (const N: Integer): Int64;
var 
 I: Integer;
 f1, f2: Int64;
Begin
  if N <= 1 then
    Result := N 
  else begin
    f1 := 0;
    f2 := 1;
    for N := 1 to N do begin
      Result := f1 + f2;
      f2 := f1;
      f1 := Result;
    end;
  end;
End;

//Função Recursiva Clássica

Function Fibonacci(const N: Integer): Int64;
Var
 Res: Int64;
Begin
  If N <= 2 then
    Res := 1
  else
    Res := Fibonacci(N-2) + Fibonacci(N-1);
  Result := Res;
end;

//Função normal com Index e Qtd

Function Fib(Const Index, Qtd: Integer): Int64;
Var
 I: Integer;
 f1, f2: Int64;
Begin
  If Index > 0 then begin
  
    f1 := 0;
    f2 := 1;
    for I := 1 to (Index + Qtd) do begin
      Result := f1 + f2;
      f2 := f1;
      f1 := Result;
    end;
    
  end else begin
    If Index < 0 then begin
    
      f1 := 0;
      f2 := -1;
      for I := -1 downto (Index - Qtd) do begin
        Result := f1 - f2;
        f2 := f1;
        f1 := Result;
      end;
      
    end else begin
      Showmessage("Com índice zero não é possível saber a direção (positivo ou negativo).");
    end;
  end;
End;