Giải thuật ựệ quy 1 Khái niệm ựệ qu

Một phần của tài liệu giáo trình tin học đại cương (Trang 100 - 101)

- Mô hình Internet Mail: Là mô hình liên kết cách ộp thư lưu trên Internet, mỗi hộp thư

7.Giải thuật ựệ quy 1 Khái niệm ựệ qu

7.1. Khái nim ựệ qui

Một ựối tượng ựược gọi là ựệ qui nếu nó bao gồm một phần của chắnh nó hay ựược ựịnh nghĩa bởi chắnh nó.

Trong khi thiết kế giải thuật ta thường thiết kế dưới dạng các mô- ựun. Khi giải thuật

ựược cài ựặt thành chương trình thắ các mô- ựun sẽ tương ứng với các chương trình con (hàm- function và thủ tục- procedure),

Chương trình con ựược gọi là ựệ qui nếu trong thân của nó có lời gọi trực tiếp hoặc gián tiếp ựến chắnh bản thân nó.

Vắ d 1: định nghĩa số tự nhiên + 0 là số tự nhiên

+ Số tiếp theo của một số tự nhiên là một số tự nhiên

Vắ d 2: định nghĩa n! + 0!=1

+ n!=n*(n-1)! nếu n>0

- định nghĩa một phép ựệ qui gồm có 2 phần

+ Trường hợp suy biến: Giúp cho quá trình ựệ qui kết thúc

+ Phần ựệ qui (hay phần qui nạp): Trong ựó tác ựộng cần ựược thực hiện cho giá trị hiện thời của các tham số ựược ựịnh nghĩa bằng các tác ựộng hay giá trị ựược ựịnh nghĩa trước ựây

Trong vắ dụ ựịnh nghĩa n! thì trường hợp suy biến ựịnh nghĩa 0!, phần qui nạp ựịnh nghĩa n! qua các giá trị của n và giá trị của (n-1)!

Dễ nhận xét, nếu (n-1)! ựã tắnh ựược thì n! sẽ dễ dàng tắnh ựược. Với cách suy diễn tương tự, (n-1)! sẽ tắnh ựược nếu như (n-2)! ựã tắnh ựược... cuối cùng 1! sẽ tắnh ựược nếu 0!

ựã tắnh ựược. Ta thấy rằng 0! ựã cho trong ựịnh nghĩa. Do vậy ựi ngược từ cuối, vì 0! ựã tắnh

ựược nên 1! cũng tắnh ựược,....,sau khi (n-1)! ựã có ta sẽ nhận ựược n! Minh hoạ: Tắnh 3!

3!=3*2!=3*2=6

2!=2*1!=2*1=2 1!=1*0!=1*1=1

Giải thuật ựược viết dưới dạng thủ tục hàm (tựa Pascal) như sau:

function giaithua(n)

begin

if n=0 then giaithua:=1 (* trường hợp suy biến*)

else giaithua:=n*giaithua(n-1) (* phần ựệ qui*)

end

Chú ý: Không phải lúc nào tắnh ựệ qui trong cách giải bài toán cũng thể hiện rõ nét và dễ phát hiện như vắ dụ trên. Do ựó muốn biết giải thuật của một bài toán có thể thiết kế dưới dạng giải thuật ựệ qui ựược hay không? Có thể thấy câu trả lời qua việc trả lời các câu hỏi sau : + Có thểựịnh nghĩa ựược bài toán dưới dạng một bài toán cùng loại nhưng ỘnhỏỢ hơn không?

+ Kắch thước của bài toán sẽ giảm ựi ở mỗi bước gọi ựệ qui như thế nào? + Trường hợp nào của bài toán ựược coi là trường hợp suy biến?

Một phần của tài liệu giáo trình tin học đại cương (Trang 100 - 101)