Lập trình .NET

Lập trình .NET

BT4: In dãy số Fibonacci

1. Yêu cầu

Nhập vào số tự nhiên, hãy in ra dãy số Fibonacci.
Dãy số Fibonacci được định nghĩa như sau:
Dãy số Fibonnaci
Theo định nghĩa, hai số đầu tiên của dãy số Fibonacci là 0 và 1, và mỗi con số tiếp sau là tổng của hai số trước nó.
Bài toán số con thỏ (Xem thêm)
Một đôi thỏ (gồm một thỏ đực và một thỏ cái) cứ mỗi tháng đẻ được một đôi thỏ con (cũng gồm một thỏ đực và thỏ cái); một đôi thỏ con, khi tròn 2 tháng tuổi, sau mỗi tháng đẻ ra một đôi thỏ con, và quá trình sinh nở cứ thế tiếp diễn. Hỏi sau n tháng có bao nhiêu đôi thỏ, nếu đầu năm (tháng Giêng) có một đôi thỏ sơ sinh?
Thuật giải Fibonacci tính số thỏ
Trong hình vẽ trên, ta quy ước:

Cặp thỏ nâu là cặp thỏ có độ tuổi 1 tháng.
Cặp thỏ được đánh dấu (màu đỏ và màu xanh) là cặp thỏ có khả năng sinh sản.
Nhìn vào hình vẽ trên ta nhận thấy:

  • Tháng Giêng và tháng Hai: Chỉ có 1 đôi thỏ.
  • Tháng Ba: đôi thỏ này sẽ đẻ ra một đôi thỏ con, do đó trong tháng này có 2 đôi thỏ.
  • Tháng Tư: chỉ có đôi thỏ ban đầu sinh con nên đến thời điểm này có 3 đôi thỏ.
  • Tháng Năm: có hai đôi thỏ (đôi thỏ đầu và đôi thỏ được sinh ra ở tháng Ba) cùng sinh con nên ở tháng này có 2 + 3 = 5 đôi thỏ.
  • Tháng Sáu: có ba đôi thỏ (2 đôi thỏ đầu và đôi 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 đôi thỏ, v.v

Khái quát, nếu n là số tự nhiên khác 0, gọi f(n) là số đôi 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 đôi thỏ sinh ra ở tháng n -1 không thể sinh con ở tháng thứ n, và ở tháng này đôi thỏ tháng thứ n – 2 sinh ra một đôi thỏ con nên số đôi thỏ được sinh ra ở tháng thứ n chính là giá trị của f(n – 2).


2. Thuật toán


Bước 1 :Khai báo các biến a, b, n, i 
Bước 2: Set a = 1
Bước 3: Set b = 1
Bước 4: Read n
Bước 5: if n < 1 then
Bước 6: Print "Không tồn tại dãy số Fibonacci"
        else
Bước 7: if n == 1 then Print a
        else
Bước 8: if n == 2 then Print a,b
        else
Bước 9: Print a 
Bước 10: Print b 
Bước 11: Set  i = 2
Bước 12: loop (i < n) 
Bước 13: c = a + b
Bước 14: Print c
Bước 15: a = b 
Bước 16: b = c
Bước 17: i = i+1
Bước 18: end loop

3. Lưu đồ thuật giải

Giải thích thuật toán

thuật toán in ra dãy số Fibonacci

4. Video giải thích

5. Code

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Share via
Copy link
Powered by Social Snap