Saturday, June 8, 2019

Viết chương trình tìm số Fibonacci thứ n java

Hôm nay tienanhvn sẽ chia sẽ cho các bạn về một bài toán tìm số fibonaci thứ n bằng 2 cách giải (1. sử dụng thuật toán đệ quy để tìm số fibonaci thứ n, 2. Sử dụng vòng lặp và thực hiện phép giao hoán để tìm số fibonaci thứ n), thực ra bài toán này thường gặp trong các dự án nhỏ và hay gặp nhất trong các môn học lập trình java, hay lâp trình c, c++.

Viết chương trình tìm số Fibonacci thứ n java

Để làm được vấn đề này các bạn hãy tham khảo những cách suy diễn bài viết của mình nhé.

Tìm hiểu fibonaci là gì ?

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

Những bài toán sử dụng dãy fibonaci.


  1. Bài toán con thỏ
  2. Số các cụ tổ của một con ông đực

Thực hiện tìm số fibonaci thứ n bằng java

Sử dụng đệ quy trong fibonaci, chúng ta viết một hàm bằng thuật toán đệ quy để trả về một số fibonaci.
// dung de quy de tinh so fibonaci thu n
int fibonaci(int n){
if(n == 1 || n ==2)return 1;
return fibonaci(n-1) + fibonaci(n-2);
}
Giải thích :
Nếu trường hợp n bằng 1 hoặc 2 thì nó sẽ trả về số fibonaci 1, còn nếu nó làm ngoài trường hợp trên thì ta dùng đệ quy để tìm kiềm, vì sao phải dùng đệ quy, bởi vì thực hiện phép tính đệ quy nó thực hiện nhanh hơn, giảm lượng thời gian code, còn có một số người không
hiểu đệ quy là gì , thì vui lòng hãy tìm hiểu nhé.

Khai báo hàm main của chương trình.
public static void main(String args[]){
int n =40;
Timsofibonaci fb = new Timsofibonaci();
System.out.println("so fibonaci thu n: " + n +" la : " +fb.fibonaci(n));
}
Cách 2. Không sử dụng thuật toán đệ quy để tìm fibonaci
Cách giải như sau:
   Kiểm tra điều kiện nếu ở trường hợp n bằng 1 hoặc bằng 2 thì nó sẽ trả về 1.
   Thực hiện gắn giá trị cho a =0 , a1= 1,a2 =1;
   Thực hiện vòng lặp cho i >= n sau đây tôi sử dụng vòng lặp while để thực hiện điều kiên while(i<=n)
   Trong vòng lặp white thực hiện phép hoán giá trị như sau:
    a = a1+a2;
a1= a2;
a2 =a;
Trả kết quả a
Thực hiện chương trình như sau:
// khong dung de quy de tim fibonaci
int fibonaciN(int n){
if(n == 1 || n == 2) return 1;
int i =3,a=0,a1 =1,a2 =1;
while(i<=n){
a = a1+a2;
a1 =a2;
a2 =a;
i++;
}
return a;
}
Khai báo hàm main.
 public static void main(String args[]){
int n =40;
Timsofibonaci fb = new Timsofibonaci();
System.out.println("so fibonaci thu n: " + n +" la : " +fb.fibonaciN(n));
}
Kết quả :

No comments:

Post a Comment