Chương 1 trang bị cho người học kiến thức cơ bản về lập trình đệ quy. Nội dung chính trong chương này gồm có: Khái niệm, thiết kế giải thuật đệ quy, cấu trúc hàm đệ quy, phân loại đệ quy, đệ quy tuyến tính, đệ quy nhị phân, đệ quy hỗ tương,... Mời các bạn cùng tham khảo.
Võ Quang Hoàng Khang Cho S(n) = + + + … + n =>S(10)? S(11)? Một hàm được gọi có tính đệ quy nếu thân của hàm đó có lệnh gọi lại chính nó Ví dụ S(n) được tính thơng qua S(n-1) điều kiện quan trọng Tồn tại bước đệ quy Điều kiện dừng B1 Tham số hố tốn B3 Tìm trường hợp suy biến B2 Phân tích trường hợp chung: đưa tốn dạng tốn loại có phạm vi giải nhỏ theo nghĩa dần tiến đến trường hợp suy biến Hàm đệ quy gồm phần: Phần sở: Điều kiện để thoát khỏi đệ quy (điểm dừng) Phần đệ quy: gọi đến với giá trị tham số nhỏ giá trị ban đầu Ví dụ: n * (n - 1)! n! 0! • Cơng thức truy hồi tính • Hàm đệ quy: (n - 1)!* n n! 0! long GiaiThua( int n ) { if(n==0) return 1; else return GiaiThua(n-1)*n; } • Hàm đệ quy nhập mảng chiều: void NhapMang(int a[],int n) { if(n>0) { NhapMang(a,n-1); cin>>a[n-1]; } } Trong thân hàm có nhất lời gọi hàm gọi lại chính nó một cách tường minh TenHam () { if (điều kiện dừng) { //Trả giá trị hay kết thúc công việc } //Thực công việc (nếu có) TenHam (); //Thực công việc (nếu có) } 10 N đĩa A B C N đĩa A B C Giải thuật đệ quy toán Tháp Hà Nội: void HaNoi (int n, char A, char B, char C) { if (n==1) cout