JavaScript đệ quy là gì?
Ở cấp độ cơ bản nhất, sử dụng đệ quy trong lập trình có nghĩa là gọi một hàm bên trong chính nó cho đến khi đạt được một điều kiện nhất định Show Trong JavaScript, vì các hàm được truyền theo tham chiếu, nên hàm có thể được truyền cho chính nó dưới dạng một trong các đối số và sau đó được gọi trong phần thân của hàm Ví dụ cổ điển về hàm đệ quy đang sử dụng giai thừa. Trong toán học, một giai thừa (được viết bằng. ) là tích của một số nguyên (n) và mọi số nguyên dương nhỏ hơn n Ví dụ: 4. bằng 4 x 3 x 2 x 1, hay 24 Tại sao một hàm đệ quy tốt cho một vấn đề như thế này trong lập trình?
Đối với mỗi bước, bạn đang nhân số nguyên với giai thừa của số nguyên dương nhỏ nhất tiếp theo. 4. thực sự giống như 4 x 3. (vì đó là 4 x 3 x 2 x 1). Do đó, nó giống như 4 x 3 x 2. , và như thế Vì vậy, sử dụng đệ quy ở đây có ý nghĩa hoàn hảo. Phương pháp đơn giản nhất là viết một cái gì đó như function factorial(n) { Câu lệnh if là điểm đột phá của chúng ta, nghĩa là kết thúc đệ quy khi chúng ta đáp ứng điều kiện n === 0. Đây được gọi là trường hợp cơ bản Được rồi, nhưng điều gì sẽ xảy ra nếu chúng ta làm điều gì đó như, giai thừa (-2). Điều đó sẽ không hiệu quả, vì vậy có lẽ nên cập nhật chức năng này một chút để chúng ta không mãi mãi rơi vào vòng lặp tiêu cực trong một vòng lặp vô tận function factorial(n) { if (n < 0) { Nếu chúng ta viết điều này ra, chính xác thì chuyện gì sẽ xảy ra? function factorial(4) { Hiểu đệ quy bằng cách suy nghĩ về ngăn xếp cuộc gọiCách chính xác hơn để hình dung hàm trên không phải là nghĩ về nó theo cách nó được viết 4 * (3 * (2 * (1 * (1))))), mà là xem xét cách nhập trước Mỗi lần lặp lại của đệ quy sẽ thêm vào ngăn xếp cuộc gọi, xây dựng cho đến khi chức năng không được gọi nữa. Sau đó, JavaScript được thực thi. Vì vậy, cách chính xác hơn để viết những gì đang xảy ra sẽ là 1 x 1 x 2 x 3 x 4 Xác định các kịch bản khác để sử dụng đệ quyBây giờ rõ ràng rằng các thành phần chính của việc hiểu đệ quy là hàm gọi chính nó và đảo ngược (FIFO) trong ngăn xếp cuộc gọi, chúng ta có thể sử dụng thông tin này để áp dụng đệ quy cho các vấn đề phổ biến khác Một vấn đề phổ biến trong các cuộc phỏng vấn kỹ thuật là sử dụng đệ quy để đảo ngược chuỗi hoặc thực hiện kiểm tra bảng màu. Đây là những liên quan và xây dựng trên các khái niệm trên đảo ngược chuỗifunction reverseString(string) { Ví dụ này sử dụng chuỗi con JavaScript. Phương thức str.substring(indexStart[, indexEnd]) Vì trong trường hợp này, nó được áp dụng theo cách đệ quy, nên việc sử dụng chỉ mục kết thúc trong trường hợp này sẽ không hợp lý. Thay vào đó, chúng ta có thể thấy điều này tuân theo một khuôn mẫu rất giống với giai thừa Logic của chức năng có thể được nghĩ ra như sau reverseString("mary")return reverse(string.substr(1)) + "m"return (reverse(string.substr(1)) + "a") + "m"return ((reverse(string.substr(1)) + "r") + "a") + "m"return ((("y") + "r") + "a") + "m" kiểm tra bảng chữ cáifunction isPalindrome(string) { Nói một cách dễ hiểu, nếu chữ cái đầu tiên của một chuỗi bằng với chữ cái cuối cùng, hãy gọi lại hàm, bây giờ với chuỗi có chữ cái đầu tiên bị cắt bớt Viết ra, logic sẽ trông giống như, isPalindrome(“hannah”)is string[0] === string[5]? "h" === "h" trueisPalindrome("anna") is string[0] === string[3]? "a" === "a" true isPalindrome("nn") is string[0] === string[2]? "n" === "n" true Nhìn chung, các bước quan trọng để suy nghĩ thông qua các hàm đệ quy là ghi nhớ ngăn xếp, chia nhỏ nó thành một trường hợp cơ sở và sau đó tìm ra sự sửa đổi cần thiết đối với đối số được chuyển vào lời gọi đệ quy của hàm Có nhiều tài nguyên tuyệt vời cho đệ quy, bao gồm các giải thích sâu hơn về ngăn xếp cuộc gọi, trường hợp cơ bản và nhiều vấn đề thực hành như được liên kết bên dưới Đệ quy trong JavaScript w3schools là gì?Đệ quy là kỹ thuật tự gọi hàm . Kỹ thuật này cung cấp một cách để chia nhỏ các vấn đề phức tạp thành các vấn đề đơn giản dễ giải quyết hơn. Đệ quy có thể hơi khó hiểu. Cách tốt nhất để tìm ra cách thức hoạt động của nó là thử nghiệm với nó.
Đệ quy trong mã hóa là gì?Đệ quy là quá trình xác định một vấn đề (hoặc giải pháp cho một vấn đề) theo (một phiên bản đơn giản hơn) của chính nó . Ví dụ: chúng ta có thể định nghĩa thao tác "tìm đường về nhà" là. Nếu bạn đang ở nhà, hãy ngừng di chuyển. Bước một bước về nhà. "tìm đường về nhà".
Đệ quy trong JavaScript MDN là gì?Hành động của hàm gọi chính nó , đệ quy được sử dụng để giải các bài toán có chứa các bài toán con nhỏ hơn. Một hàm đệ quy có thể nhận hai đầu vào. trường hợp cơ sở (kết thúc đệ quy) hoặc trường hợp đệ quy (tiếp tục đệ quy).
Đệ quy là gì và nó hoạt động như thế nào?Đệ quy thực hiện một số lần gọi hàm lặp lại từ bên trong hàm . Điều kiện đệ quy thực hiện các lệnh gọi hàm lặp lại cho đến khi trường hợp cơ sở được đáp ứng. Trường hợp cơ sở có mặt bên trong hàm và khi điều kiện của trường hợp cơ sở được thỏa mãn, nó sẽ dừng thực thi. |