Bài giảng Kỹ thuật lập trình nâng cao: Chương 5 - ThS. Phạm Đào Minh Vũ
Số trang: 12
Loại file: pdf
Dung lượng: 429.66 KB
Lượt xem: 15
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 5 trang bị cho người học kiến thức về lập trình đệ qui. Nội dung chính trong chương này gồm có: Khái niệm lập trình đệ qui, đệ qui tuyến tính, đệ qui nhị phân, đệ qui phi tuyến, đệ qui hỗ tương, cách hoạt động hàm đệ qui,... Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình nâng cao: Chương 5 - ThS. Phạm Đào Minh Vũ CHƢƠNG 5Lập trình đệ quiKhái niệm Một hàm được gọi có tính đệ qui nếu trong thân của hàm đó có lệnh gọi lại chính nó một cách tường minh hay tiềm ẩn. Phân loại đệ qui Đệ qui tuyến tính. Đệ qui nhị phân. Đệ qui phi tuyến. Đệ qui hỗ tương.2Đệ qui tuyến tính• Trong thân hàm có duy nhất mộ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ả về giá trị hay kết thúc công việc } //Thực hiện một số công việc (nếu có) . . . TenHam (); //Thực hiện một số công việc (nếu có) }3Đệ qui tuyến tính (tt)Ví dụ: Tính S (n) 1 2 3 n- Điều kiện dừng: S(0) = 0.- Qui tắc (công thức) tính: S(n) = S(n-1) + n. long TongS (int n) { if(n==0) return 0; return ( TongS(n-1) + n ); }4Đệ qui nhị phân• Trong thân của hàm có hai 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ả về giá trị hay kết thúc công việc } //Thực hiện một số công việc (nếu có) . . .TenHam (); //Giải quyết vấn đề nhỏ hơn //Thực hiện một số công việc (nếu có) . . . TenHam (); //Giải quyết vấn đề còn lại //Thực hiện một số công việc (nếu có) }5Đệ qui nhị phân (tt)Ví dụ: Tính số hạng thứ n của dãy Fibonaci được định nghĩa như sau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1)Điều kiện dừng: f(0) = f(1) = 1. long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); }6Đệ qui phi tuyến Trong thân của hàm có lời gọi hàm gọi lại chính nó được đặt bên trong vòng lặp. TenHam () { for (int i = 1; iĐệ qui phi tuyến (tt)Ví dụ: Tính số hạng thứ n của dãy {Xn} được định nghĩa như sau:X0 =1 ;Xn = n2X0 + (n-1)2X1 + … + 12Xn-1 ; (n≥1)Điều kiện dừng:X(0) = 1. long TinhXn (int n) { if(n==0) return 1; long s = 0; for (int i=1; iĐệ qui hỗ tương Trong thân của hàm này có lời gọi hàm đến hàm kia và trong thân của hàm kia có lời gọi hàm tới hàm này. g() f() f() f() g() h()9Đệ qui hỗ tương (tt) TenHam2 (); TenHam1 (){ //Thực hiện một số công việc (nếu có) …TenHam2 (); //Thực hiện một số công việc (nếu có)} TenHam2 (){ //Thực hiện một số công việc (nếu có) …TenHam1 (); //Thực hiện một số công việc (nếu có)}10 Ví dụ: Tính số hạng thứ n của hai dãy {Xn}, {Yn} được định nghĩa như sau: X0 =Y0 =1 ; Xn = Xn-1 + Yn-1; (n>0) Yn = n2Xn-1 + Yn-1; (n>0) - Điều kiện dừng:X(0) = Y(0) = 1. long TinhYn(int n); long TinhXn (int n) { if(n==0) return 1; return TinhXn(n-1) + TinhYn(n-1); } long TinhYn (int n) { if(n==0) return 1; return n*n*TinhXn(n-1) + TinhYn(n-1); }11Cách hoạt động hàm đệ qui Ví dụ tính n! với n=5 int GiaiThua(int n) { if(n==1) return 1; return GiaiThua(n-1)*n; } main() GiaiThua(5) GiaiThua(4) GiaiThua(3) GiaiThua(2) GiaiThua(1) 5 4 3 2 1 n 5 n 5 n 4 n 3 n 2 n 1 120 24 6 2 112
Nội dung trích xuất từ tài liệu:
Bài giảng Kỹ thuật lập trình nâng cao: Chương 5 - ThS. Phạm Đào Minh Vũ CHƢƠNG 5Lập trình đệ quiKhái niệm Một hàm được gọi có tính đệ qui nếu trong thân của hàm đó có lệnh gọi lại chính nó một cách tường minh hay tiềm ẩn. Phân loại đệ qui Đệ qui tuyến tính. Đệ qui nhị phân. Đệ qui phi tuyến. Đệ qui hỗ tương.2Đệ qui tuyến tính• Trong thân hàm có duy nhất mộ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ả về giá trị hay kết thúc công việc } //Thực hiện một số công việc (nếu có) . . . TenHam (); //Thực hiện một số công việc (nếu có) }3Đệ qui tuyến tính (tt)Ví dụ: Tính S (n) 1 2 3 n- Điều kiện dừng: S(0) = 0.- Qui tắc (công thức) tính: S(n) = S(n-1) + n. long TongS (int n) { if(n==0) return 0; return ( TongS(n-1) + n ); }4Đệ qui nhị phân• Trong thân của hàm có hai 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ả về giá trị hay kết thúc công việc } //Thực hiện một số công việc (nếu có) . . .TenHam (); //Giải quyết vấn đề nhỏ hơn //Thực hiện một số công việc (nếu có) . . . TenHam (); //Giải quyết vấn đề còn lại //Thực hiện một số công việc (nếu có) }5Đệ qui nhị phân (tt)Ví dụ: Tính số hạng thứ n của dãy Fibonaci được định nghĩa như sau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1)Điều kiện dừng: f(0) = f(1) = 1. long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); }6Đệ qui phi tuyến Trong thân của hàm có lời gọi hàm gọi lại chính nó được đặt bên trong vòng lặp. TenHam () { for (int i = 1; iĐệ qui phi tuyến (tt)Ví dụ: Tính số hạng thứ n của dãy {Xn} được định nghĩa như sau:X0 =1 ;Xn = n2X0 + (n-1)2X1 + … + 12Xn-1 ; (n≥1)Điều kiện dừng:X(0) = 1. long TinhXn (int n) { if(n==0) return 1; long s = 0; for (int i=1; iĐệ qui hỗ tương Trong thân của hàm này có lời gọi hàm đến hàm kia và trong thân của hàm kia có lời gọi hàm tới hàm này. g() f() f() f() g() h()9Đệ qui hỗ tương (tt) TenHam2 (); TenHam1 (){ //Thực hiện một số công việc (nếu có) …TenHam2 (); //Thực hiện một số công việc (nếu có)} TenHam2 (){ //Thực hiện một số công việc (nếu có) …TenHam1 (); //Thực hiện một số công việc (nếu có)}10 Ví dụ: Tính số hạng thứ n của hai dãy {Xn}, {Yn} được định nghĩa như sau: X0 =Y0 =1 ; Xn = Xn-1 + Yn-1; (n>0) Yn = n2Xn-1 + Yn-1; (n>0) - Điều kiện dừng:X(0) = Y(0) = 1. long TinhYn(int n); long TinhXn (int n) { if(n==0) return 1; return TinhXn(n-1) + TinhYn(n-1); } long TinhYn (int n) { if(n==0) return 1; return n*n*TinhXn(n-1) + TinhYn(n-1); }11Cách hoạt động hàm đệ qui Ví dụ tính n! với n=5 int GiaiThua(int n) { if(n==1) return 1; return GiaiThua(n-1)*n; } main() GiaiThua(5) GiaiThua(4) GiaiThua(3) GiaiThua(2) GiaiThua(1) 5 4 3 2 1 n 5 n 5 n 4 n 3 n 2 n 1 120 24 6 2 112
Tìm kiếm theo từ khóa liên quan:
Kỹ thuật lập trình nâng cao Kỹ thuật lập trình Bài giảng Kỹ thuật lập trình nâng cao Lập trình đệ qui Đệ qui tuyến tính Đệ qui nhị phânTài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 270 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 212 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 198 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 170 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 154 0 0 -
Báo cáo thực tập Công nghệ thông tin: Lập trình game trên Unity
27 trang 120 0 0 -
Giáo trình về phân tích thiết kế hệ thống thông tin
113 trang 114 0 0 -
LUẬN VĂN: Tìm hiểu kỹ thuật tạo bóng cứng trong đồ họa 3D
41 trang 110 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 10: Tổng kết môn học (Trường Đại học Bách khoa Hà Nội)
67 trang 107 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 93 0 0