Đệ quy là một quá trình tự gọi lại. Một hàm tự gọi là được gọi là một hàm đệ quy.
Cú pháp cho hàm đệ quy là:
function recurse() {
// function code
recurse();
// function code
}
recurse();
Ở đây, hàm recurse()
là một hàm đệ quy. Nó tự gọi lại trong hàm.
Cách hoạt động của đệ quy trong JavaScript
Một hàm đệ quy phải có điều kiện để ngừng tự gọi. Nếu không, hàm sẽ được gọi mãi mãi.
Một khi điều kiện được đáp ứng, hàm sẽ ngừng tự gọi. Điều này được gọi là điều kiện cơ sở.
Để ngăn chặn đệ quy vô hạn, bạn có thể sử dụng câu lệnh if…else (hoặc phương pháp tương tự) nơi một nhánh thực hiện lời gọi đệ quy, và nhánh khác thì không.
Vì vậy, nó thường trông như thế này.
function recurse() {
if(condition) {
recurse();
}
else {
// stop calling recurse()
}
}
recurse();
Một ví dụ đơn giản về hàm đệ quy là đếm giá trị xuống đến 1.
Ví dụ 1: In Số
// program to count down numbers to 1
function countDown(number) {
// display the number
console.log(number);
// decrease the number value
const newNumber = number - 1;
// base case
if (newNumber > 0) {
countDown(newNumber);
}
}
countDown(4);
Kết quả
4
3
2
1
Trong chương trình trên, người dùng truyền một số dưới dạng đối số khi gọi hàm.
Trong mỗi vòng lặp, giá trị số được giảm đi 1 và hàm countDown()
được gọi cho đến khi số là dương. Ở đây, newNumber > 0
là điều kiện cơ sở.
Lời gọi đệ quy này có thể được giải thích theo các bước sau:
countDown(4) in 4 và gọi countDown(3) countDown(3) in 3 và gọi countDown(2) countDown(2) in 2 và gọi countDown(1) countDown(1) in 1 và gọi countDown(0)
Khi số đạt đến 0, điều kiện cơ sở được đáp ứng và hàm không được gọi nữa.
Ví dụ 2: Tìm Giai thừa
// program to find the factorial of a number
function factorial(x) {
// if number is 0
if (x === 0) {
return 1;
}
// if number is positive
else {
return x * factorial(x - 1);
}
}
const num = 3;
// calling factorial() if num is non-negative
if (num > 0) {
let result = factorial(num);
console.log(`The factorial of ${num} is ${result}`);
}
Cảm ơn bạn!
Run Code
Kết quả
The factorial of 3 is 6
Khi bạn gọi hàm factorial()
với một số nguyên dương, nó sẽ đệ quy gọi lại chính nó bằng cách giảm số đó.
Quá trình này tiếp tục cho đến khi số trở thành 1. Sau đó khi số đạt đến 0, 1 sẽ được trả về.
Tính Giai thừa Sử dụng Đệ quy
Lời gọi đệ quy này có thể được giải thích theo các bước sau:
factorial(3) trả về 3 * factorial(2) factorial(2) trả về 3 * 2 * factorial(1) factorial(1) trả về 3 * 2 * 1 * factorial(0) factorial(0) trả về 3 * 2 * 1 * 1
- Bài viết trên blog này được xuất bản lần đầu tại:https://www.programiz.com/
Cảm ơn bạn!