Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Tìm số Fibonaci thứ N -> Fi(n)


Cách thông thường

Program Day_so_Fibonaci;
uses crt;
Var
    n:integer;
Function Fi(x:integer):int64;
var j:integer;
begin
     if x<=2 then 
        exit(1)
     else
        fi:=fi(x-2)+fi(x-1);
end;
Begin
   clrscr;
   Writeln('IN DAY SO FIBONACI');
   Writeln('------------------');
   Write('-Nhap so N= ');
   Readln(n);
   Writeln('+So hang thu ',n,' cua day Fibonaci = ',Fi(n));
   Writeln;
   Writeln('   Bam phim  de ket thuc');
   Readln
End.

Sử dụng BigNum

type bignum=string;
function add(a,b:bignum):bignum;
var sum, carry, i: integer;
    c:bignum;
begin
    carry := 0;
    c     := '';
    while length(a) 0 then c:='1'+c;
        add := c;
end;  
function fibo(n:longint):bignum;
var i:longint;
    fi,fi_1,fi_2 :bignum;
begin
    if n<1 then 
        exit(char(n+48));
    fi_2 := '0';
    fi_1 := '1';
    for i:=2 to n do 
    begin
        fi   := add(fi_1,fi_2);
        fi_2 := fi_1;
        fi_1 := fi;
    end;
    exit(fi);
end;
// main program
var n: longint;
begin
    write('Nhap n: '); readln(n);
    writeln(fibo(n));
    readln;
end.

Dãy Fibo được tạo từ 2 ký tự a và b
a b ab bab abbab bababbab abbabbababbab

Program Day_so_Fibonaci_a_b;
Var
    i,n:integer;
    Function Fi(x:integer):string;
var j:integer;
    f,f1,f2:string;
begin
   if x=1 then 
       fi:='a'
   else if x=2 then 
       fi:='b'
   else
       fi:=fi(x-2)+fi(x-1);
end;
Begin
   Writeln('IN DAY SO FIBONACI DUNG KY TU a b');
   Writeln('------------------');
   Write('-Nhap so N= ');
   Readln(n);
   Writeln('+So hang thu ',n,' cua day Fibonaci_ab = ',Fi(n));
   Writeln;
   for i:=1 to n do writeln(fi(i),#32);
   Writeln('   Bam phim  de ket thuc');
   Readln
End.