Nội dung chính
Đề bài
Viết chương trình tìm n số Fibonacci đầu tiên trong java. Số nguyên dương n được nhập từ bàn phím.
Quy luật của dãy số Fibonacci: số tiếp theo bằng tổng của 2 số trước, 2 số đầu tiên của dãy số là 0, 1. Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
Lời giải
Có 2 cách để viết chương trình dãy số Fibonacci trong java
- Tính dãy số Fibonacci trong java không dùng phương pháp đệ quy
- Tính dãy số Fibonacci trong java sử dụng phương pháp đệ quy
Tính dãy số Fibonacci không dùng phương pháp đệ quy
Ví dụ chương trình tính dãy số Fibonacci không sử dụng phương pháp đệ quy:
File: FibonacciExample1.java
package vn.viettuts.baitap; /** * Tính số fibonacci KHÔNG dùng phương pháp đệ quy * * @author viettuts.vn */ public class FibonacciExample1 { /** * main * * @param args */ public static void main(String[] args) { System.out.println("10 số đầu tiên của dãy số fibonacci: "); for (int i = 0; i < 10; i++) { System.out.print(fibonacci(i) + " "); } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { int f0 = 0; int f1 = 1; int fn = 1; if (n < 0) { return -1; } else if (n == 0 || n == 1) { return n; } else { for (int i = 2; i < n; i++) { f0 = f1; f1 = fn; fn = f0 + f1; } } return fn; } }
Kết quả:
10 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21 34
Tính dãy số Fibonacci sử dụng phương pháp đệ quy
Ví dụ chương trình tính dãy số Fibonacci sử dụng phương pháp đệ quy:
File: FibonacciExample2.java
package vn.viettuts.baitap; /** * Tính dãy số Fibonacci bằng phương pháp đệ quy * * @author viettuts.vn */ public class FibonacciExample2 { /** * main * * @param args */ public static void main(String[] args) { System.out.println("10 số đầu tiên của dãy số fibonacci: "); for (int i = 0; i < 10; i++) { System.out.print(fibonacci(i) + " "); } } /** * Tính số fibonacci thứ n * * @param n: chỉ số của số fibonacci tính từ 0 * vd: F0 = 0, F1 = 1, F2 = 1, F3 = 2 * @return số fibonacci thứ n */ public static int fibonacci(int n) { if (n < 0) { return -1; } else if (n == 0 || n == 1) { return n; } else { return fibonacci(n - 1) + fibonacci(n - 2); } } }
Kết quả:
10 số đầu tiên của dãy số fibonacci: 0 1 1 2 3 5 8 13 21 34