Bài toán

Đề bài: Nhập vào một số nguyên dương n hãy tính số Fibonacci thứ n.

Ví dụ:

Input: 1
Output: 1
Input: 5
Output: 5

Hướng dẫn giải

Dãy Fibonacci là dãy vô hạn các số tự nhiên bắt đầu bằng hai phần tử 0 và 1 hoặc 1 và 1, các phần tử sau đó được thiết lập theo quy tắc mỗi phần tử luôn bằng tổng hai phần tử trước nó. Công thức truy hồi của dãy Fibonacci là:

F(n) = 1; với n=1, n=2
F(n) = F(n-1) + F(n-2); với n > 2

Dựa vào công thức truy hồi như trên ta có thể dễ dàng dùng đệ quy để tính F(n). Ta cùng xem đoạn code sau:

int fibonacci(int n) {
  if (n <= 2) return 1;

  return fibonacci(n - 1) + fibonacci(n - 2);
}

Như vậy ta chỉ cần dùng điều kiện n <= 2 để dừng đệ quy.

Code

Dưới đây là đoạn code tham khảo:

#include <stdio.h>

int fibonacci(int n) {
  if (n <= 2) return 1;

  return fibonacci(n - 1) + fibonacci(n - 2);
}

int main()
{
  int n;

  printf("Enter n: ");
  scanf("%d", &n);

  printf("F(n): %d\n", fibonacci(n));
}