Bài giảng Kỹ thuật lập trình nâng cao: Chương 7 - Trần Minh Thái
Số trang: 13
Loại file: pdf
Dung lượng: 361.86 KB
Lượt xem: 13
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:
Bài giảng "Kỹ thuật lập trình nâng cao - Chương 7: Lập trình đệ quy" cung cấp cho người học các kiến thức: Đệ quy tuyến tính, đệ quy nhị phân, đệ quy phi tuyến, đệ quy hỗ tương, các hoạt động hàm đệ quy. Mời các bạn cùng tham khảo nội dung chi tiết.
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 7 - Trần Minh Thái* Trần Minh Thái minhthai@itc.edu.vn 1 **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 *• 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ó) } 3Vídụ: Tính S ( n ) = 1 + 2 + 3 + L + 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.int TongS (int n){ if(n==0) return 0; return ( TongS(n-1) + n );} 4 *1. Tính n!2. In ra các ước số của số nguyên dương3. Đếm số lượng ước số của số nguyên dương4. Tìm ước số chung lớn nhất của 2 số nguyên dương5. Kiểm tra số nguyên dương n có phải là số nguyên tố?6. Nhập vào mảng 1 chiều số nguyên a, kích thước n7. Xuất mảng 1 chiều số nguyên a, kích thước n8. Tìm phần tử có giá trị x trong mảng số nguyên a, kích thước n 5 *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ườngminh. 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ó) } 6Ví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);} 7 ** 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; iVí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 **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. 10 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ó)} 11Ví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);} 12 **Ví dụ tính n! với n=5 13
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 7 - Trần Minh Thái* Trần Minh Thái minhthai@itc.edu.vn 1 **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 *• 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ó) } 3Vídụ: Tính S ( n ) = 1 + 2 + 3 + L + 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.int TongS (int n){ if(n==0) return 0; return ( TongS(n-1) + n );} 4 *1. Tính n!2. In ra các ước số của số nguyên dương3. Đếm số lượng ước số của số nguyên dương4. Tìm ước số chung lớn nhất của 2 số nguyên dương5. Kiểm tra số nguyên dương n có phải là số nguyên tố?6. Nhập vào mảng 1 chiều số nguyên a, kích thước n7. Xuất mảng 1 chiều số nguyên a, kích thước n8. Tìm phần tử có giá trị x trong mảng số nguyên a, kích thước n 5 *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ườngminh. 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ó) } 6Ví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);} 7 ** 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; iVí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 **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. 10 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ó)} 11Ví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);} 12 **Ví dụ tính n! với n=5 13
Tìm kiếm theo từ khóa liên quan:
Bài giảng Kỹ thuật lập trình nâng cao Kỹ thuật lập trình nâng cao Kỹ thuật lập trình Lập trình đệ quy Đệ quy phi tuyến Đệ quy hỗ tươngTài liệu liên quan:
-
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 267 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 209 0 0 -
Giới thiệu môn học Ngôn ngữ lập trình C++
5 trang 195 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 169 0 0 -
Luận văn: Nghiên cứu kỹ thuật giấu tin trong ảnh Gif
33 trang 153 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 119 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 109 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 106 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 93 0 0