Kỹ Thuât Đê Quy Chương 3

21 112 0
Kỹ Thuât Đê Quy Chương 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hàm đệ quy trong C là các hàm mà bản thân nó có khả năng gọi lại chính nó. Và kỹ thuật này được gọi là đệ quy. Trong bài học này, Lập Trình Không Khó sẽ cùng các bạn đi tìm hiểu về hàm đệ quy, bao gồm: tính chất của hàm đệ quy, ưu điểm và nhược điểm của đệ quy, thực hành các bài toán kinh điển sử dụng đệ quy, tìm hiểu về khái niệm khử đệ quy…

Chương Kỹ thuật đệ qui 3.1 Khái niệm đệ quy  Một hàm gọi đến hàm gọi đệ qui  Định nghĩa số tự nhiên số tự nhiên bé Nếu k số tự nhiên k + số tự nhiên Như vậy, số tự nhiên 0, ta có số tự nhiên là: + = 1, + = 2,…  Chuỗi ký tự Chuỗi rỗng chuỗi ký tự Một chuỗi ký tự ghép với ký tự chuỗi ký tự 3.1 Khái niệm đệ quy  Tính giai thừa, n! Khi n = n! = Khi n > n! = (n - 1)! * n  Ước chung lớn hai số nguyên không âm m, n (với m >n) sau: Nếu n = UCLN(m, n) = m Nếu n ≠ UCLN(m, n) = UCLN(n, m mod n) 3.2 Hàm đệ quy  Hai bước giải toán đệ quy Bước 1: Phân tích tốn thành tốn đồng dạng đơn giản dừng lại toán đồng dạng đơn giản xác định kết Bước 2: Xác định kết toán đồng dạng từ đơn giản đến phức tạp để có kết cuối 3.2 Hàm đệ quy Cấu trúc hàm đệ quy () { if () { … return ; } Gọi lại hàm với tham số bé } 3.2 Hàm đệ quy Viết hàm tính n!, với n ≥ long Fac(int n) { if(n == 0) return 1; return n*Fac(n – 1); } 3.2 Hàm đệ quy  Đệ quy tuyến tính Trong thân hàm có lời gọi hàm gọi lại cách tường minh () { if () { … return ; } … (); … } 3.3 Phân loại đệ qui  Đệ quy tuyến tính Tính S(n) = + + … + n S(n) = S(n – 1) + n Điều kiện dừng: S(0) = long Tong(int n) { if (n == 0) return 0; return Tong(n–1) + n; } 3.3 Phân loại đệ qui  Đệ quy nhị phân Trong thân hàm có hai lời gọi hàm gọi lại cách tường minh () { if () { … return ; } … (); … … (); … } 3.3 Phân loại đệ qui  Đệ quy nhị phân Tính số hạng thứ n dãy Fibonacy f(0) = f(1) = f(n) = f(n – 1) + f(n – 2) n > Điều kiện dừng: f(0) = f(1) = long Fibo(int n) { if (n == || n == 1) return 1; return Fibo(n–1) + Fibo(n–2); } 10 3.3 Phân loại đệ qui  Đệ quy hỗ tương Trong thân hàm có lời gọi hàm tới hàm ngược lại () { if () { … return ; } … (); … } } () { if () { … return ; } … (); … } 11 3.3 Phân loại đệ qui  Đệ quy hỗ tương Tính số hạng thứ n dãy sau: x(0) = 1, y(0) = x(n) = x(n – 1) + y(n – 1) y(n) = 3*x(n – 1) + 2*y(n – 1) Điều kiện dừng: x(0) = 1, y(0) = long xn(int n) { if (n == 0) return 1; return xn(n-1) + yn(n-1); } long yn(int n) { if (n == 0) return 0; return 3*xn(n-1) + 2*yn(n-1); } 12 3.3 Phân loại đệ qui  Đệ quy phi tuyến Trong thân hàm có lời gọi hàm lại đặt bên thân vòng lặp () { if () { … return ; } … Vòng lặp { … (); } … } 13 3.3 Phân loại đệ qui  Đệ quy phi tuyến Tính số hạng thứ n dãy: x(0) = x(n) = n2x(0) + (n-1)2x(1) + … + 22x(n – 2) + 12x(n – 1) Điều kiện dừng: x(0) = long xn(int n) { if (n == 0) return 1; long s = 0; for (int i=1; i; } … (); … } 11 3. 3 Phân loại đệ qui  Đệ quy hỗ tương Tính số hạng thứ n dãy sau: x(0) = 1, y(0) = x(n) = x(n – 1) + y(n – 1) y(n) = 3* x(n – 1) + 2*y(n – 1) Điều kiện dừng:

Ngày đăng: 11/01/2020, 21:45

Từ khóa liên quan

Mục lục

  • Chương 3 Kỹ thuật đệ qui

  • 3.1. Khái niệm đệ quy

  • Slide 3

  • 3.2. Hàm đệ quy

  • Slide 5

  • Slide 6

  • Slide 7

  • 3.3. Phân loại đệ qui

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • 3.4. Các bước xây dựng hàm đệ quy

  • 3.5. Một số lỗi thường gặp

  • 3.6. Các vấn đề đệ quy thường gặp

  • Slide 18

  • Slide 19

  • Tổng kết

Tài liệu cùng người dùng

Tài liệu liên quan