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

Bài giảng Lập trình C nâng cao - Chương 3: Lập trình đệ qui

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

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

Chương 3 cung cấp cho người học những kiến thức về lập trình đệ qui. Các nội dung chính của chương này gồm có: Tổng quan về lập trình đệ qui, đệ qui tuyến tính, đệ qui nhị phân, đệ qui phi tuyến, đệ qui tương hỗ. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình C nâng cao - Chương 3: Lập trình đệ qui

  1. Chương 3: LẬP TRÌNH ĐỆ QUI 1. Tổng quan về lập trình đệ qui 2. Đệ qui tuyến tính 3. Đệ qui nhị phân 4. Đệ qui phi tuyến 5. Đệ qui tương hỗ
  2. 1.Tổng quan về lập trình đệ qui • Đệ qui là hàm cho phép gọi đến chính hàm đó • Trong lập trình đệ qui sẽ bao gồm 2 phần: – Phần neo:Là phần cơ sở, cho phép tính một giá trị cụ thể – Phần đệ qui:Cho phép gọi lại chính hàm đó để tính giá trị hiện tại của hàm bằng cách gọi các hàm tính giá trị ở bước trước đó. • Có 4 loại đệ qui là đệ qui tuyến tính, đệ qui nhị phân, đệ qui phi tuyến và đệ qui tương hỗ.
  3. 2. Đệ qui tuyến tính • Là loại hàm đệ qui phổ biến nhất. • Nó có cú pháp như sau: Ham { if() { Trả về kết quả hoặc kết thúc công việc } else { Thực hiên công việc – nếu cần Gọi đệ qui } }
  4. 2. Đệ qui tuyến tính • Ví dụ: Viết hàm đệ qui tính n! – Định nghĩa: n! = 1x2x….x(n-1)xn. Ta có: • 1!=1; • 2! = 1 x 2  2 X 1! • 3! = 1 x 2 x 3  3 X 2! • 4! = 1 x 2 x 3 x 4  4 x 3! • … • n!=1 x 2 x 3 x….x (n-1) x n  (n-1)! x n
  5. 3. Đệ qui nhị phân • Là loại hàm đệ qui cho phép chia ra thành những việc nhỏ hơn, không cồng kềnh. • Cú pháp Ham { if() { Trả về kết quả hoặc kết thúc công việc } else { Thực hiên công việc – nếu cần Gọi đệ qui 1()//Giải quyết việc nhỏ hơn Gọi đệ qui 2()//Giải quyết phần còn lại } }
  6. 3. Đệ qui nhị phân • Ví dụ: – Tìm số fibo thứ n có thể tính bằng cách: • Tìm F(n-1) • Tìm F(n-2) • ret=F(n -1)+F(n-2); – Tìm phần tử lớn nhất, bé nhất ở trong mảng. • Tìm giá trị lớn nhất ở bên trái • Tìm giá trị lớn nhất ở bên phải • So sánh giá trị lớn nhất, nhỏ nhất ở bên trái, bên phải tìm giá trị lớn nhất, nhỏ nhất.
  7. 4. Đệ qui phi tuyến • Đệ qui phi tuyến cho phép gọi đệ qui bên trong vòng lặp. • Cú pháp Ham { for(i=0;i
  8. 4. Đệ qui phi tuyến • Ví dụ: Tìm dãy {Xn} xác định theo công thức truy hồi sau đây: Xo = 1 Xn = n2Xo +(n-1)2X1+…+12Xn-1 nếu n>=1 Nếu n = 0 => Xo =1 n = 1 => X1 = 1 n = 2 => 22x1 +12x1 = 5 n = 3 => 32x1 + 22 x 1 + 1x5 = 18 n = 4 => 42x1+32x1+22x5+12x18 = 63
  9. 5. Đệ qui tương hỗ • Là loại hàm đệ qui gọi lại chính nó thông qua 1 hàm khác. • Cú pháp: Ham1 { //Làm 1 số việc nếu cần Ham2(..); //Làm 1 số việc nếu cần } Ham2 { //Làm 1 số việc nếu cần Ham1(..); //Làm 1 số việc nếu cần }
  10. 5. Đệ qui tương hỗ • Ví dụ: Hai dãy {Xn}, {Yn} được định nghĩa Xo=Yo = 1 Xn=Xn-1 + Yn-1 Yn=n2Xn-1 + Yn-1 Nếu n =0 => Xo = Yo = 1 n = 1 => X1 = 1+1 = 2 Y1 = 12x1 + 1 = 2 n =2 => X2 = 2 + 2 = 4 Y2= 22x2 + 2 = 10 ……
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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