Câu hỏi:

17/10/2022 993

Dãy Fibonacci. Dãy số Fibonacci được xác định như sau: F0 = 0, F1 = 1, ...., Fn = Fn-1 + Fn-2 (với n lớn hơn hoặc bằng 2). Điều thú vị là dãy số này nảy sinh từ một bài toán thực tế – bài toán đếm thỏ. Một cặp thỏ (gồm một thỏ đực và một thỏ cái) cứ mỗi tháng đẻ được một cặp thỏ con (cũng gồm một thỏ đực và thỏ cái); một cặp thỏ con, khi tròn 2 tháng tuổi, sau mỗi tháng đẻ ra một cặp thỏ con, và quá trình sinh nở cứ thế tiếp diễn. Hỏi sau n tháng có bao nhiêu cặp thỏ, nếu đầu năm (tháng Giêng) có một cặp thỏ sơ sinh?

Media VietJack

Trong hình vẽ trên, quy ước:

Cặp thỏ nhỏ là cặp thỏ có độ tuổi 1 tháng.

Cặp thỏ to hơn là cặp thỏ có khả năng sinh sản.

Quan sát hình vẽ trên ta thấy:

Tháng giêng và tháng hai: Chỉ có 1 cặp thỏ.

Tháng Ba: Cặp thỏ này sẽ đẻ ra một cặp thỏ con, do đó trong tháng này có 2 cặp thỏ.

Tháng Tư: Chỉ có cặp thỏ ban đầu sinh con nên đến thời điểm này có 3 cặp thỏ.

Tháng Năm: Có hai cặp thỏ (cặp thỏ đầu và cặp thỏ được sinh ra ở tháng Ba) cùng sinh con nên ở tháng này có 2 + 3 = 5 cặp thỏ.

Tháng Sáu: Có ba cặp thỏ (2 cặp thỏ đầu và cặp thỏ được sinh ra ở tháng Tư) cùng sinh con ở thời điểm này nên đến đây có 3 + 5 = 8 cặp thỏ.

Quá trình này có thể được khái quát như sau:

Nếu n là số tự nhiên khác 0, gọi f(n) là số cặp thỏ có ở tháng thứ n, ta có:

Với n = 1 ta được f(1) = 1.

Với n = 2 ta được f(2) = 1.

Với n = 3 ta được f(3) = 2.

Do đó với n > 3 ta được: f(n) = f(n - 1) + f(n – 2).

Điều đó có thể được giải thích như sau: Các cặp thỏ sinh ra ở tháng n - 1 không thể sinh con ở tháng thứ n, và ở tháng này cặp thỏ tháng thứ n–2 sinh ra một cặp thỏ con nên số cặp thỏ được sinh ra ở tháng thứ n chính là giá trị của f(n – 2).

Viết chương trình nhập n từ bàn phím, tạo và in ra dãy số A bao gồm n số hạng đầu của dãy Fibonacci.

Siêu phẩm 30 đề thi thử THPT quốc gia 2024 do thầy cô VietJack biên soạn, chỉ từ 100k trên Shopee Mall.

Mua ngay

Quảng cáo

Trả lời:

verified
Giải bởi Vietjack

Chương trình có thể viết như sau:

# Dãy Fibonacci

Fibonacci = [0, 1]

n = int(input("Nhập số tự nhiên n >= 2: "))

i = 2

while i <= n:

Fibonacci.append(Fibonacci[i -1] + Fibonacci[i - 2])

i = i + 1

print (Fibonacci)

Quảng cáo

book vietjack

CÂU HỎI HOT CÙNG CHỦ ĐỀ

Câu 1:

Cho A là một danh sách gồm các số nguyên. Em hãy viết các câu lệnh tạo và in ra danh sách B chỉ gồm các số chẵn có trong A.

Xem đáp án » 17/10/2022 2,797

Câu 2:

Giả sử A = [2, 4, '5', 'Hà Nội', 'Việt Nam', 9]. Hãy cho biết kết quả các câu lệnh sau:

a) 4 in A

Xem đáp án » 17/10/2022 1,277

Câu 3:

Cho dãy số [1, 2, -5, 5, 8, -8]. Em hãy viết chương trình chèn xâu "Số âm" vào sau phân tử nhỏ hơn 0 đầu tiên của dãy đã cho.

Xem đáp án » 17/10/2022 1,107

Câu 4:

Trong danh sách các địa danh du lịch có thể có địa danh xuất hiện nhiều lần. Viết chương trình để xoá bớt các trường hợp trùng lặp, sao cho mỗi địa danh trong danh sách chỉ có 1 lần.

Xem đáp án » 17/10/2022 659

Câu 5:

Cho A là một danh sách gồm các số nguyên. Em hãy viết các câu lệnh xác định và in ra số các phân tử lớn hơn 0 của A.

Xem đáp án » 17/10/2022 606

Câu 6:

Cho A là một danh sách gồm các số nguyên. Em hãy viết các câu lệnh xoá tất cả các phần tử nhỏ hơn 0 trong A và in danh sách nhận được ra màn hình.

Xem đáp án » 17/10/2022 594

Bình luận


Bình luận