tailieunhanh - Bài giảng Cấu trúc dữ liệu: Chương 12 - Nguyễn Xuân Vinh
Bài giảng Cấu trúc dữ liệu - Chương 12: Giải thuật đệ quy trình bày về khái niệm đệ quy, điều kiện viết chương trình đệ quy, một số ví dụ đệ quy và thiết kế giải thuật đệ quy. Mời bạn đọc cùng tham khảo. | GIẢI THUẬT đệ quy Nguyễn Xuân Vinh nguyenxuanvinh@ CẤU TRÚC DỮ LIỆU DATA STRUCTURES [214331] Nội dung Khái niệm đệ quy. Thiết kế giải thuật đệ quy Khái niệm đệ quy đệ quy là một khái niệm cơ bản trong toán học và khoa học máy tính. Một đối tượng được gọi là đệ quy nếu nó hoặc một phần của nó được định nghĩa thông qua khái niệm về chính nó. Trong lĩnh vực lập trình: 1 chương trình gọi là đệ quy nếu nó gọi lại chính nó. Chương trình đệ quy luôn 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 chính nó nữa, chấm dứt đệ quy. Khái niệm đệ quy Ví dụ: Định nghĩa số tự nhiên: 0 là số tự nhiên. Nếu k là số tự nhiên thì k+1 cũng là số tự nhiên. Định nghĩa xâu kí tự (chuỗi kí tự) bằng đệ quy: Xâu rỗng là xâu kí tự Một chữ cái bất kì ghép với 1 xâu sẽ tạo thành xâu mới Định nghĩa hàm giai thừa n!: Khi n = 0, định nghĩa 0! = 1 Khi n>0, định nghĩa n! = (n-1)! * n Khái niệm đệ quy Ví dụ private int Factor(int n){ if (n==0) return 1; else return . | GIẢI THUẬT đệ quy Nguyễn Xuân Vinh nguyenxuanvinh@ CẤU TRÚC DỮ LIỆU DATA STRUCTURES [214331] Nội dung Khái niệm đệ quy. Thiết kế giải thuật đệ quy Khái niệm đệ quy đệ quy là một khái niệm cơ bản trong toán học và khoa học máy tính. Một đối tượng được gọi là đệ quy nếu nó hoặc một phần của nó được định nghĩa thông qua khái niệm về chính nó. Trong lĩnh vực lập trình: 1 chương trình gọi là đệ quy nếu nó gọi lại chính nó. Chương trình đệ quy luôn 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 chính nó nữa, chấm dứt đệ quy. Khái niệm đệ quy Ví dụ: Định nghĩa số tự nhiên: 0 là số tự nhiên. Nếu k là số tự nhiên thì k+1 cũng là số tự nhiên. Định nghĩa xâu kí tự (chuỗi kí tự) bằng đệ quy: Xâu rỗng là xâu kí tự Một chữ cái bất kì ghép với 1 xâu sẽ tạo thành xâu mới Định nghĩa hàm giai thừa n!: Khi n = 0, định nghĩa 0! = 1 Khi n>0, định nghĩa n! = (n-1)! * n Khái niệm đệ quy Ví dụ private int Factor(int n){ if (n==0) return 1; else return n*Factor(n-1); } Đặc điểm của chương trình đệ quy: Chương trình này có thể gọi chính nó Khi chương trình gọi chính nó thì mục đích là để giải quyết một vấn đề tương tự nhưng nhỏ hơn. Vấn đề nhỏ hơn này một lúc nào đó sẽ đơn giản tới mức chương trình có thể tự giải quyết mà không cần phải gọi chính nó nữa. Khái niệm đệ quy Để xây dựng 1 chương trình đệ quy cần tồn tại 1 công thức đệ quy. Công thức này gồm 2 phần: Phần đệ quy: recursive case Phần cơ bản: base case Ưu điểm của chương trình đệ quy: Có thể thực hiện một lượng lớn các thao tác tính toán thông qua 1 đoạn chương trình ngắn gọn. Có thể định nghĩa một tập vô hạn các đối tượng thông qua 1 số hữu hạn lời phát biểu. Điều kiện viết chương trình đệ quy Vấn đề cần xử lý phải giải quyết được bằng 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: một hàm gọi tới chính nó đệ quy gián tiếp: Một hàm gọi tới hàm khác, hàm khác này gọi tới hàm bạn đầu Khi nào không nên sử dụng đệ quy Khi một hàm
đang nạp các trang xem trước