Bài viết này sẽ giải thích chi tiết Recursive là gì, sử dụng Recursive như thế nào.
Đệ quy
Trong lập trình máy tính, thuật ngữ đệ quy mô tả một hàm hoặc phương pháp tính toán lặp lại một phần nhỏ hơn của chính nó để đi đến kết quả cuối cùng. Nó tương tự như lặp, nhưng thay vì lặp lại một tập hợp các thao tác, một hàm đệ quy hoàn thành việc lặp lại bằng cách tham chiếu đến chính nó theo định nghĩa của chính nó. Mặc dù ban đầu có thể khó nắm bắt được khái niệm về lập trình đệ quy, nhưng việc nắm vững nó có thể rất hữu ích. Đệ quy là một trong những công cụ cơ bản của khoa học máy tính.
Một ví dụ cổ điển là phương pháp đệ quy để tính giai thừa của một số. Giai thừa của một số nguyên n, được viết là n !, là kết quả của phép nhân n với tất cả các số nguyên dương nhỏ hơn n. Ví dụ, 3! = 3 x 2 x 1, kết quả là 6 và 4! = 4 x 3 x 2 x 1, kết quả là 24. Một cách hiệu quả để tính giai thừa là với một hàm đệ quy.
Dưới đây là một ví dụ về một hàm giai thừa đệ quy được viết bằng JavaScript.
function factorial(n) { return (n === 0) ? 1 : n * factorial(n-1); }
Như bạn có thể thấy, một phần của định nghĩa về giai thừa của hàm là kết quả của giai thừa được thực hiện trên một số nguyên nhỏ hơn. Bằng cách gọi chính nó, nó có thể nhân số với mỗi số dương nhỏ hơn nó và sau đó trả về kết quả cuối cùng. Các hàm đệ quy có thể hữu ích trong các phép tính khác, chẳng hạn như tính số Fibonacci hoặc ước số chung lớn nhất.
Sử dụng logic đệ quy có thể có một số lỗi, bao gồm cả việc tạo ra một vòng lặp vô tận trong lập trình. Vì lý do này, có một điều kiện thoát (như làm cho đến khi) giúp giảm, nếu không loại bỏ, cơ hội xảy ra một vòng lặp vô tận. Nếu một vòng lặp vô tận xảy ra, nó có thể khiến chương trình sử dụng nhiều bộ nhớ. Ngoài ra, nó có thể khiến một chương trình, hệ điều hành hoặc máy tính ngừng hoạt động.