Hàm đệ quy là hàm gọi chính bản thân nó. Hàm gọi đệ quy là một công cụ mạnh trong lập trình khi giải quyết những vần đề lớn; với vấn đề lớn, một cách giải quyết là chia nhỏ nó thành những vấn đề tương tự nhưng nhỏ hơn và ta có thể cho hàm gọi lại chính nó với để giải quyết những vấn đề nhỏ hơn này. Bài toán đệ quy nổi tiếng là câu đố Tháp Hà Nội. Trong cấu trúc HTML DOM, đệ quy rất có ích. Ví dụ đoạn mã tìm một phần tử theo thuộc tính của nó với hàm đệ quy walk_the_DOM như sau:
var walk_the_DOM = function walk(node, func) { func(node); node = node.firstChild; while (node) { walk(node, func); node = node.nextSibling; } }; var getElementsByAttribute = function (att, value) { var results = []; walk_the_DOM(document.body, function (node) { var actual = node.nodeType === 1 && node.getAttribute(att); if (typeof actual === 'string' && (actual === value || typeof value !== 'string')) { results.push(node); }}); return results; };
JavaScript không hỗ trợ tối ưu đệ quy đuôi (tail recursion optimization)- nghĩa là nếu một hàm trả về kết quả là lời gọi chính bản thân nó thì chúng ta có thể dùng vòng lặp thay thế lời gọi này để tăng tốc độ.
Ý kiến bài viết