Java Core - Đệ quy trong java
Đệ quy trong java
Đệ quy trong java là quá trình trong đó một phương thức gọi lại chính nó một cách liên tiếp. Một phương thức trong java gọi lại chính nó được gọi là phương thức đệ quy.
Sử dụng đệ quy giúp code chặt chẽ hơn nhưng sẽ khó để hiểu hơn.
Cú pháp:
returntype methodname() {
// code
methodname();
}
Ví dụ về đệ quy trong java
Dưới đây là các ví dụ về cách sử dụng đệ quy trong java.
Ví dụ 1: vòng lặp vô tận
public class RecursionExample1 {
static void p() {
System.out.println("hello");
p();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
p();
}
}
Kết quả:
NOTE: Sau khi chạy được xong màn hình kết quả này, màn hình kết quả sẽ hiển thị lỗi.
Ví dụ 2: vòng lặp có hạn
public class RecursionExample2 {
static int count = 0;
static void p() {
count++;
if (count <= 5) {
System.out.println("hello " + count);
p();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
p();
}
}
Kết quả:
Ví dụ 3: tính giai thừa
public class RecursionExample3 {
static int factorial(int n) {
if (n == 1)
return 1;
else
return (n * factorial(n - 1));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Giai thừa của 5 là: " + factorial(5));
}
}
Kết quả:
Chương trình trên hoạt động như sau:
factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
return 1
return 2*1 = 2
return 3*2 = 6
return 4*6 = 24
return 5*24 = 120
Ví dụ 4: dẫy số Fibonacci
public class RecursionExample4 {
static int n1 = 0, n2 = 1, n3 = 0;
static void printFibo(int count) {
if (count > 0) {
n3 = n1 + n2;
n1 = n2;
n2 = n3;
System.out.print(" " + n3);
printFibo(count - 1);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = 15;
System.out.print(n1 + " " + n2); // in 0 và 1
printFibo(count - 2);// n-2 vì 2 số 0 và 1 đã được in ra
}
}
Kết quả: