Kết quả nào đúng trong số những kết quả dưới đây sau khi thực hiện thuật toán:
Function Test (n: Integer): Integer;
Var f1, f2, fn: Integer;
Begin
f1=1;
f2=1;
i:=3;
While i<=n do
Begin
fn := f1 + f2; f1:=f2; f2:=fn;
i:=i+1;
End;
Test:= fn;
End;
Trả lời:
Đáp án đúng: C
Thuật toán này tính số Fibonacci thứ n. Ta sẽ kiểm tra từng đáp án:
A. Test(6):
f1 = 1, f2 = 1, i = 3
i = 3: fn = 1 + 1 = 2, f1 = 1, f2 = 2
i = 4: fn = 1 + 2 = 3, f1 = 2, f2 = 3
i = 5: fn = 2 + 3 = 5, f1 = 3, f2 = 5
i = 6: fn = 3 + 5 = 8, f1 = 5, f2 = 8
Test(6) = 8. Vậy đáp án A sai.
B. Test(5):
f1 = 1, f2 = 1, i = 3
i = 3: fn = 1 + 1 = 2, f1 = 1, f2 = 2
i = 4: fn = 1 + 2 = 3, f1 = 2, f2 = 3
i = 5: fn = 2 + 3 = 5, f1 = 3, f2 = 5
Test(5) = 5. Vậy đáp án B sai.
C. Test(7):
f1 = 1, f2 = 1, i = 3
i = 3: fn = 1 + 1 = 2, f1 = 1, f2 = 2
i = 4: fn = 1 + 2 = 3, f1 = 2, f2 = 3
i = 5: fn = 2 + 3 = 5, f1 = 3, f2 = 5
i = 6: fn = 3 + 5 = 8, f1 = 5, f2 = 8
i = 7: fn = 5 + 8 = 13, f1 = 8, f2 = 13
Test(7) = 13. Vậy đáp án C đúng.
D. Test(4):
f1 = 1, f2 = 1, i = 3
i = 3: fn = 1 + 1 = 2, f1 = 1, f2 = 2
i = 4: fn = 1 + 2 = 3, f1 = 2, f2 = 3
Test(4) = 3. Vậy đáp án D sai.