Mục lục

Đệ quy trong lập trình (Script Recursion)

Đệ quy là gì?

Đệ quy trong lập trình là một kỹ thuật – chủ yếu được sử dụng trong các ngôn ngữ lập trình hàm – để chia một vấn đề lớn thành các vấn đề con nhỏ hơn, giống hệt nhau. Đệ quy giúp đơn giản hóa quá trình giải quyết vấn đề bằng cách cho phép biểu diễn lời giải dưới dạng một phiên bản nhỏ hơn của chính vấn đề đó.

Các ứng dụng chính của đệ quy trong lập trình:

Ưu điểm của đệ quy:

Nhược điểm của đệ quy:

Ví dụ về đệ quy

1. Ví dụ đầu tiên là hàm đệ quy tính số Fibonacci:

function fibRecursion(n)
    if n < 0 then 
        error("Invalid number.")
        return 0
    end
 
    if n <= 1 then
        return n
    else
        return fibRecursion(n-1) + fibRecursion(n-2)
    end
end

2. Thêm vòng lặp for để in ra dãy số từ vị trí 1 đến 12:

function fibRecursion(n)
    if n < 0 then 
        error("Invalid number.")
        return 0
    end
 
    if n <= 1 then
        return n
    else
        return fibRecursion(n-1) + fibRecursion(n-2)
    end
end
 
for i=1, 12 do
    print("Số Fibonacci ở vị trí ".. i.. ": ".. fibRecursion(i))
end

Kết quả in ra: “0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144”
Khi chạy chương trình, ta sẽ thấy kết quả đúng như trên.


Chú thích thêm:

  1. Tràn ngăn xếp là gì? Hãy tưởng tượng bạn đang xây một tòa tháp bằng gạch. Mỗi lần gọi một hàm là thêm một viên gạch. Nếu xếp quá nhiều, tháp sẽ đổ – đó chính là stack overflow. Máy tính sẽ nói kiểu: “Ôi không, nhiều quá! Tao xử lý không nổi!”
  2. Dãy số Fibonacci là dãy số mà mỗi số là tổng của hai số trước nó, bắt đầu từ 0 và 1. Ví dụ: 0, 1, 1, 2, 3, 5, 8, 13, v.v.