Viết thuật toán fibonacci và giải thích đang cần gấp ạ

Viết thuật toán fibonacci và giải thích đang cần gấp ạ

0 bình luận về “Viết thuật toán fibonacci và giải thích đang cần gấp ạ”

  1. Thuật toán:

    var n:integer;
    function f(i:integer):integer;
    begin
            if i <= 2 then f := 1
            else f := f(i-1) + f(i-2);
    end;
    begin
            n:=100;
            writeln(f(n));
    end.

    Giải thích: ở đây mình dùng tính dừng chương trình của thuật toán đệ quy nếu dãy fibo mà là 0,1,2 thì chắc chắn in ra sẽ là 1 nên ta sẽ không xét. Còn các trường hợp còn lại ta sử dụng thuật toán tính dạy fibo như bình thường là số cần tìm sẽ bằng tổng của 2 số sau.

    @danhle

    Bình luận
  2. Cách 1: Dùng mảng

    program fibonacci1;

    uses crt;

    var i,n:integer; 

    //ở đây có thể thay “integer” = “longint” hoặc “int64” thì sẽ được số lớn hơn.

          f:array[0..1000] of integer;

    begin

       clrscr;

       writeln(‘nhap vao n=’); readln(n);

       f[0]:=0; f[1]:=1;

       for i:=2 to n do f[i]:=f[i-1]+f[i-2];

       writeln(f[n]);  readln;

    end.

    Cách 2: Câu lệnh “While”

    program fibonacci2;

    uses crt;

    var i,n,f,f0,f1:integer; 

    //ở đây có thể thay “integer” = “longint” hoặc “int64” thì sẽ được số lớn hơn.

    begin

       clrscr;

       writeln(‘nhap vao n=’); readln(n);

       f0:=0; f1:=1; i:=2;

       while i<=n do

          begin

          f:=f0+f1;

          f0:=f1;

          f1:=f;

          i:=i+1;

          end;

       write(f); readln;

    end.

    STUDY GOOD BRO ;-;

    Bình luận

Viết một bình luận