Mục lục bài viết

1. Dãy số Fibonacci là gì?

Dãy số Fibonacci là dãy vô hạn các số nguyên dương bắt đầu bằng hai phần tử 0 và 1. Các phần tử sau đó tuân theo quy tắc: mỗi phần tử luôn bằng tổng hai phần tử trước nó. Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89,…

Công thức truy hồi của dãy số Fibonacci là: S(n) = S(n-1) + S(n-2) với S(0) = 0 và S(1) = 1.

Ví dụ dãy số Fibonacci

Trong lập trình, có 2 dạng yêu cầu phổ biến khi thao tác với dãy số Fibonacci là:

1. Nhập n, xuất ra n chữ số đầu tiên trong dãy số Fibonacci

2. Tìm phần tử thứ n trong dãy số Fibonacci

Trong bài này, các ví dụ sẽ chủ yếu giải quyết yêu cầu: nhập n, xuất n chữ số đầu tiên trong dãy số Fibonacci.

2. Tìm dãy số Fibonacci sử dụng vòng lặp (loop) trong Java

Đoạn code bên dưới sử dụng vòng lặp for để tìm dãy số Fibonacci trong Java.

package fibonacci;
import java.util.Scanner;

public class Fibonacci {
    public static void main(String[] args) {
        int n;
        System.out.print("Enter the number of first digits in the fibonacci sequence "
                + "you want to output: ");
        try (Scanner scanner = new Scanner(System.in)) {
            n = scanner.nextInt();
        }
        int n1 = 0, n2 = 1;
        if (n == 1) {
            System.out.print(n1);
        } else if (n == 2) {
            System.out.print(n1 + " " + n2);
        } else {
            System.out.print(n1 + " " + n2);
            int tempNthTerm;
            for (int i = 3; i <= n; i++) {
                tempNthTerm = n1 + n2;
                System.out.print(" " + tempNthTerm);
                n1 = n2;
                n2 = tempNthTerm;
            }
        }
    }
}

3. Tìm dãy số Fibonacci sử dụng đệ quy (recursion) trong Java

Đoạn code bên dưới sử dụng đệ quy để tìm dãy số Fibonacci trong Java.

package fibonacci;
import java.util.Scanner;

public class Fibonacci {
    public static int findFibonacci(int n) {
        if (n == 0) {
            return 0;
        }
        if (n == 1) {
            return 1;
        }
        return findFibonacci(n - 2) + findFibonacci(n - 1);
    }
    public static void main(String[] args) {
        int n;
        System.out.print("Enter the number of first digits in the fibonacci sequence "
                + "you want to output: ");
        try (Scanner scanner = new Scanner(System.in)) {
            n = scanner.nextInt();
        }
        for (int i = 0; i < n; i++) {
            System.out.print(Fibonacci.findFibonacci(i) + " ");
        }
    }
}

Bài này đã trình bày cách sử dụng vòng lặp for và đệ quy để xuất n chữ số đầu tiên trong dãy số Fibonacci. Các bạn hãy viết chương trình Java tìm phần tử thứ n trong dãy số Fibonacci.

Tác giả

Vinh Lê

Giảng viên CNTT, chia sẻ tutorial lập trình & phần cứng tại Góc Học IT. Hơn 500 bài viết hướng dẫn từ cơ bản đến nâng cao.

Gợi ý tiếp theo

Cài đặt Python và môi trường lập trình với Visual Studio Code

Học tiếp