Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (199.18 KB, 3 trang )
Thuật toán đệ quy
1. Định nghĩa
Ta nói một đối tượng là đệ quy nếu nó được định nghĩa qua chính nó hoặc một đối tượng khác cùng dạng với chính nó bằng quy
nạp.
Nếu lời giải của một bài toán T được thực hiện bằng lời giải của bài toán T’ có dạng giống T thì đó là một lời giải đệ quy. Giải thuật
tương ứng với lời giải như vậy được gọi là giải thuật đệ quy. Chú ý, T’ có dạng giống T nhưng theo một nghĩa nào đó thì T’ phải
“nhỏ” hơn T, dễ giải hơn T và việc giải T’ không phụ thuộc vào T.
Ta đã biết đến khá nhiều ví dụ nổi tiếng về bài toán đệ quy và lời giải của nó như : bài toán tháp Hà Nội, số Fibonacci …
Định nghĩa một hàm đệ quy như sau:
-Phần neo: Phần này sẽ được thực hiện khi công việc quá đơn giản, có thể giải trực tiếp, nhanh chóng mà không cần nhờ đến
một bài toán con nào.
-Phần đệ quy: Thực hiện khi bài toán phức tạp hơn, chưa thể giải được bằng phần neo, ta xác định những bài toán con và đệ
quy để giải những bài đó. Khi đã có lời giải của những bài toán con rồi thì phối hợp lại để giải bài toán gốc.
Phần đệ quy thể hiện tính quy nạp của thuật toán đệ quy.
Vì mỗi lần gọi đệ quy bộ nhớ sẽ cần 1 lưu trữ 1 vùng nhớ mới trong khi vùng nhớ cũ vẫn phải duy trì, nên trong các ứng dụng
thực tế số lần gọi đệ quy không những phải hữu hạn mà còn phải đủ nhỏ.
2. Các dạng đệ quy thông thường
2.1 Đệ quy tuyến tính
Có dạng:
P = { if thỏa điều kiện dừng then thực hiện S;
else
{thực hiện S*;
gọi P}
}
(S, S* là các thao tác không đệ quy)
Ví dụ: hàm tính số hạng n của dãy n!
2.2 Đệ quy nhị phân
Có dạng:
P= {if thỏa điều kiện dừng thenthực hiện S;
else
{thực hiện S*;