Mô tả mang tính đệ quy về một đối tượng là mô tả theo cách phân tích đối tượng thành nhiều thành phần mà trong số các thành phần có thành phần mang tính chất của chính đối tượng được mô tả. Để hiểu rõ hơn về điều này mời các bạn tham khảo Bài giảng Kỹ thuật lập trình - Bài 4: Đệ quy sau. | Bài 4 ĐỆ QUY Trịnh Thành Trung trungtt@ 1 ĐỆ QUY - Khái niệm đệ quy • Mô tả mang tính đệ quy về một đối tượng là mô tả theo cách phân tích đối tượng thành nhiều thành phần mà trong số các thành phần có thành phần mang tính chất của chính đối tượng được mô tả. • Tức là mô tả đối tượng qua chính nó. – Mô tả đệ quy tập số tự nhiên N : • Số 1 là số tự nhiên (1-N). • Số tự nhiên bằng số tự nhiên cộng 1. – Mô tả đệ quy cấu trúc danh sách (list) kiểu T : • Cấu trúc rỗng là một danh sách kiểu T. • Ghép nối một thành phần kiểu T (nút kiểu T) với một danh sách kiểu T ta có một danh sách kiểu T. – Mô tả đệ quy cây gia phả: Gia phả của một người bao gồm người đó và gia phả của cha và gia phả của mẹ Ví dụ • Định nghĩa không đệ quy n!: – n! = n * (n-1) * * 1 • Định nghĩa đệ quy: – n! = 1 n * (n-1)! nếu n=0 nếu n>0 • Mã C++: int factorial(int n) { if (n==0) return 1; else return (n * factorial(n - 1)); } Mô tả đệ quy • Mô tả đệ quy gồm hai phần – Phần neo: trường hợp suy biến của đối tượng – Ví dụ: 1 là số tự nhiên, cấu trúc rỗng là danh sách kiểu T, 0!=1, SM (a[x:x]) là thao tác rỗng. – Phần qui nạp: mô tả đối tượng (giải thuật) thông qua chính đối tượng (giải thuật ) đó một cách trực tiếp hoặc gián tiếp. Ví dụ: – n! = n * (n –1)! – SM (a[m:n]) ≡Merge (SM (a[m:( m+n) div 2] , SM (a[(m+n) div 2 +1 : n]) .