Bài giảng Kỹ thuật lập trình: Đệ quy cung cấp cho người học các kiến thức: Các vấn đề đệ quy thông dụng, khái niệm, phân loại, đệ quy và chia để trị, bài toán tháp Hà Nội, bài toán Edit distance,... Mời các bạn cùng tham khảo.
Đệ Quy (Recursion) Trịnh Tấn Đạt Khoa CNTT - Đại Học Sài Gòn Email: trinhtandat@sgu.edu.vn Website: https://sites.google.com/site/ttdat88/ Nội dung ▪ Khái niệm ▪ Phân loại ▪ ▪ Các vấn đề đệ quy thông dụng ▪ Đệ quy chia để trị ▪ Bài toán tháp hà nội ▪ Đệ quy quy lui (option) ▪ Bài toán Edit distance (option) ▪ Bài toán Closet pairs of points (option) Bài Tập Đệ Quy ▪ ▪ Đệ quy kỹ thuật đưa toán toán loại, tính chất (đồng dạng) cấp độ thấp Quá trình tiếp tục tốn đưa cấp độ mà giải Từ cấp độ ta lần ngược lại để giải toán cấp độ cao giải xong toán ban đầu Ví dụ: Định nghĩa n giai thừa: n! = 1*2*3*4*5*…*n → định nghĩa tự nhiên n*(n-1)! với 0!=1 → định nghĩa đệ quy Đệ Quy Các ứng dụng ▪ ▪ ▪ ▪ Hình học fractal Game candy crush Structure “Tree” … Koch snowflake Candy Crush Đệ Quy - Khái niệm ▪ Kỹ thuật đệ quy: kỹ thuật định nghĩa khái niệm có sử dụng khái niệm cần định nghĩa ▪ Hàm đệ quy: hàm mà thân có lệnh gọi lại dành cho đối tượng cấp thấp ▪ Ví dụ: Hàm tính n! Đệ quy ▪ Hai yếu tố cần để tiến hành phương thức đệ quy là: o Có điều kiện dừng (phần sở, phần neo): Xác định quy luật phương thức tìm giá trị cụ thể thỏa mãn điều kiện định Nếu hàm đệ quy khơng có phần hàm bị lặp vơ hạn sinh lỗi thực o Phương thức đệ quy: Phương thức đệ quy gọi lại dành cho cấp độ thấp trả điều kiện dừng bước S = 1+2+3+…+n Ví dụ Vòng lặp vơ tận #include using namespace std; void p() { cout