Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 55 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
55
Dung lượng
256,11 KB
Nội dung
GV: NGUYỄN XUÂN VINH CẤU TRÚC DỮ LIỆU DATA STRUCTURES MÔN: CẤU TRÚC DỮ LIỆU [214331] GIẢI THUẬT đệ quy Nguyễn Xuân Vinh /XX 12/3/15 nguyenxuanvinh@hcmuaf.edu.vn GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Nội dung Khái niệm đệ quy Thiết kế giải thuật đệ quy GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Khái niệm đệ quy đệ quy khái niệm toán học khoa học máy tính Một đối tượng gọi đệ quy phần định nghĩa thông qua khái niệm Trong lĩnh vực lập trình: chương trình gọi đệ quy gọi lại Chương trình đệ quy kiểm tra điều kiện dừng: Nếu không thỏa, tiếp tục gọi đệ quy Nếu thỏa mãn không gọi nữa, chấm dứt đệ quy GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Khái niệm đệ quy Ví dụ: Định nghĩa số tự nhiên: 0 số tự nhiên Nếu k số tự nhiên k+1 số tự nhiên Định nghĩa xâu kí tự (chuỗi kí tự) đệ quy: Xâu rỗng xâu kí tự Một chữ ghép với xâu tạo thành xâu Định nghĩa hàm giai thừa n!: Khi n = 0, định nghĩa 0! = Khi n>0, định nghĩa n! = (n-1)! * n GV: NGUYỄN XUÂN VINH Khái niệm đệ quy Ví dụ private int Factor(int n){ if (n==0) return 1; else return n*Factor(n-1); MÔN: CẤU TRÚC DỮ LIỆU } Đặc điểm chương trình đệ quy: Chương trình gọi Khi chương trình gọi mục đích để giải vấn đề tương tự nhỏ Vấn đề nhỏ lúc đơn giản tới mức chương trình tự giải mà không cần phải gọi /XX 12/3/15 GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Khái niệm đệ quy Để xây dựng chương trình đệ quy cần tồn công thức đệ quy Công thức gồm phần: Phần đệ quy: recursive case Phần bản: base case Ưu điểm chương trình đệ quy: Có thể thực lượng lớn thao tác tính toán thông qua đoạn chương trình ngắn gọn Có thể định nghĩa tập vô hạn đối tượng thông qua số hữu hạn lời phát biểu GV: NGUYỄN XUÂN VINH MÔN: CẤU TRÚC DỮ LIỆU 12/3/15 /XX Điều kiện viết chương trình đệ quy Vấn đề cần xử lý phải giải cách đệ quy Ngôn ngữ dùng viết chương trình phải hỗ trợ đệ quy Các loại đệ quy: đệ quy trực tiếp: hàm gọi tới đệ quy gián tiếp: Một hàm gọi tới hàm khác, hàm khác gọi tới hàm bạn đầu GV: NGUYỄN XUÂN VINH Khi không nên sử dụng đệ quy Khi hàm đệ quy gọi tập đối tượng sử dụng hàm như: biến, hằng, cấu trúc… thông số cần cho việc chuyển giao điều khiển sinh Sử dụng đệ quy tạo tính toán thừa, không cần thiết tính chất tự động gọi thực thủ tục chưa kết thúc đệ quy /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU Nếu chương trình viết dạng lặp cấu trúc lệnh khác không nên sử dụng đệ quy GV: NGUYỄN XUÂN VINH Ví dụ Ví dụ : Lập hàm tính n! đệ quy int GT(int n) { MÔN: CẤU TRÚC DỮ LIỆU if (n==0) // điểm dừng return 1; else return n*GT(n-1); /XX 12/3/15 } GV: NGUYỄN XUÂN VINH Đệ quy (Recursion) Minh họa 10 /XX 12/3/15 MÔN: CẤU TRÚC DỮ LIỆU Gọi hàm answer [...]... 31 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải một số bài tập đệ quy 1 đĩa A B C 32 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải một số bài tập đệ quy 1 đĩa A B C 33 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải một số bài tập đệ quy 2 đĩa A B C 34 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải một số bài tập đệ quy 2 đĩa A B C 35 /XX 12/ 3/15... answer ... CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải số tập đệ quy đĩa A B C 34 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải số tập đệ quy đĩa A B C 35 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU... GV: NGUYỄN XUÂN VINH Giải số tập đệ quy đĩa A B C 36 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải số tập đệ quy đĩa A B C 37 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH. .. /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải số tập đệ quy N đĩa A B C 39 /XX 12/ 3/15 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH Giải số tập đệ quy N đĩa A B C GV: NGUYỄN XUÂN VINH