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.
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.