Đệ quy JavaScript (với các ví dụ)

Trong hướng dẫn này, bạn sẽ tìm hiểu về đệ quy trong JavaScript với sự trợ giúp của các ví dụ.

Đệ quy là một quá trình gọi chính nó. Một hàm gọi chính nó đượ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, recurse()hàm là một hàm đệ quy. Nó đang gọi chính nó bên trong hàm.

Làm việc của đệ quy trong JavaScript

Một hàm đệ quy phải có một điều kiện để ngừng gọi chính nó. Nếu không, hàm được gọi vô hạn.

Khi điều kiện được đáp ứng, hàm sẽ ngừng gọi chính nó. Đây được gọi là điều kiện cơ bản.

Để ngăn chặn đệ quy vô hạn, bạn có thể sử dụng câu lệnh if… else (hoặc cách tiếp cận tương tự) trong đó một nhánh thực hiện lệnh gọi đệ quy và nhánh kia 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 sẽ là đếm ngược giá trị đế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);

Đầu ra

 4 3 2 1

Trong chương trình trên, người dùng chuyển một số làm đối số khi gọi một hàm.

Trong mỗi lần lặp, giá trị số được giảm đi 1 và hàm countDown()được gọi cho đến khi số dương. Đây, newNumber> 0là điều kiện cơ bản.

Cuộc gọi đệ quy này có thể được giải thích theo các bước sau:

 countDown (4) in 4 và cuộc gọi countDown (3) countDown (3) in 3 và call countDown (2) countDown (2) in 2 và call countDown (1) countDown (1) in 1 và call countDown (0)

Khi số đến 0 , điều kiện cơ bản đượ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)`); )

Đầu ra

 Giai thừa của 3 là 6

Khi bạn gọi hàm factorial()với một số nguyên dương, nó sẽ gọi một cách đệ quy chính nó bằng cách giảm số lượng.

Quá trình này tiếp tục cho đến khi số trở thành 1 . Sau đó, khi con số đến 0 , 1 được trả về.

Hoạt động của đệ quy JavaScript trong Giai thừa

Cuộc gọi đệ quy này có thể được giải thích theo các bước sau:

 giai thừa (3) trả về 3 * giai thừa (2) giai thừa (2) trả về 3 * 2 * giai thừa (1) giai thừa (1) trả về 3 * 2 * 1 * giai thừa (0) giai thừa (0) trả về 3 * 2 * 1 * 1

thú vị bài viết...