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.
* Trần Minh Thái minhthai@itc.edu.vn * *Một hàm gọi có tính đệ qui nếu 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 * • Trong thân hàm có 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ó) } Vídụ: Tính S ( n ) = + + + L + n - Điều kiện dừng: S(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 ); } * Tính n! In ước số số nguyên dương Đếm số lượng ước số số nguyên dương Tìm ước số chung lớn số nguyên dương Kiểm tra số nguyên dương n có phải số nguyên tố? Nhập vào mảng chiều số nguyên a, kích thước n Xuất mảng chiều số ngun a, kích thước n Tìm phần tử có giá trị x mảng số nguyên a, kích thước 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ó) } Vídụ: Tính sốhạng thứn của dã y Fibonaci định nghĩ a sau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1) Điều kiện dừng: f(0) = f(1) = long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); } * * Trong thân của hàm có lời gọi hàm gọi lại chính nó đặt bên vòng lặp TenHam () { for (int i = 1; i0) - Điều kiện dừng:X(0) = Y(0) = 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 ... =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) = long TinhYn(int n); long TinhXn (int n) { if(n==0) return 1; return TinhXn(n-1) + TinhYn(n-1); } long... nghĩ a sau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1) Điều kiện dừng: f(0) = f(1) = long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); } * * Trong thân của hàm... Vídụ: Tính S ( n ) = + + + L + n - Điều kiện dừng: S(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 ); } * Tính n! In ước số