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 ạ”
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.
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
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 ;-;