intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình nâng cao: Chương 3 - ThS. Dương Thành Phết

Chia sẻ: Ngocnga Ngocnga | Ngày: | Loại File: PDF | Số trang:14

59
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng chương 3 trang bị cho người học những hiểu biết cơ bản về lập trình đệ qui. Chương này giúp người học nắm bắt được khái niệm về đệ qui; biết được thế nào là đệ qui tuyến tính, đệ qui nhị phân, đệ qui phi tuyến, đệ qui tương hỗ, biết được cách hoạt động hàm đệ qui. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình nâng cao: Chương 3 - ThS. Dương Thành Phết

  1. TRƢỜNG CAO ĐẲNG CNTT TP.HCM KHOA CÔNG NGHỆ THÔNG TIN KỸ THUẬT LẬP TRÌNH NÂNG CAO Chƣơng 3 LẬP TRÌNH ĐỆ QUI Giảng Viên: ThS. Dƣơng Thành Phết Email: phetcm@gmail.com Website: http://www.thayphet.net Tel: 0918158670 – facebook.com/DuongThanhPhet
  2. 1. KHÁ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
  3. 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
  4. 2. ĐỆ QUI TUYẾN TÍNH 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
  5. 3. ĐỆ 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 (); //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
  6. 3. ĐỆ QUI NHỊ PHÂN 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
  7. 4. ĐỆ 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
  8. 4. ĐỆ QUI PHI TUYẾN 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
  9. 5. ĐỆ QUI TƢƠNG HỖ 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
  10. 5. ĐỆ QUI TƢƠNG HỖ 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
  11. 5. ĐỆ QUI TƢƠNG HỖ 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. 11
  12. 5. ĐỆ QUI TƢƠNG HỖ 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
  13. 6. CÁCH HOẠT ĐỘNG HÀM ĐỆ QUI Ví dụ: tính n! với n=5 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 1 13
  14. The End. 14
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2