1. Trang chủ
  2. » Giáo án - Bài giảng

Chuong 3 Ky Thuat De Qui

21 44 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chương 3 Kỹ thuật đệ qui 3.1. Khái niệm đệ quy Một hàm gọi đến chính hàm đó thì được gọi là đệ qui Định nghĩa số tự nhiên 0 là số tự nhiên bé nhất. Nếu k là số tự nhiên thì k + 1 cũng là số tự nhiên Như vậy, số tự nhiên bắt đầu từ 0, ta có các số tự nhiên là: 0 + 1 = 1, 1 + 1 = 2,… Chuỗi ký tự Chuỗi rỗng là một chuỗi ký tự. Một chuỗi ký tự ghép với một ký tự bất kỳ là một chuỗi ký tự. Tính giai thừa, n Khi n = 0 thì n = 1 Khi n > 0 thì n = (n 1) n Ước chung lớn nhất của hai số nguyên không âm m, n (với m >n) như sau: Nếu n = 0 thì UCLN(m, n) = m Nếu n ≠ 0 thì UCLN(m, n) = UCLN(n, m mod n)

Trang 1

Chương 3

Kỹ thuật đệ qui

Trang 2

3.1 Khái niệm đệ quy

 Một hàm gọi đến chính hàm đó thì được gọi là đệ qui

Định nghĩa số tự nhiên

0 là số tự nhiên bé nhất

Nếu k là số tự nhiên thì k + 1 cũng là số tự nhiênNhư vậy, số tự nhiên bắt đầu từ 0, ta có các số tự nhiên là: 0 + 1 = 1, 1 + 1 = 2,…

Chuỗi ký tự

Chuỗi rỗng là một chuỗi ký tự

Một chuỗi ký tự ghép với một ký tự bất kỳ là một chuỗi ký tự

Trang 3

3.1 Khái niệm đệ quy

Trang 4

3.2 Hàm đệ quy

Hai bước giải bài toán đệ quy

Bước 1: Phân tích bài toán thành bài toán đồng dạng nhưng đơn giản

hơn và dừng lại ở bài toán đồng dạng đơn giản nhất có thể xác định ngay kết quả

Bước 2: Xác định kết quả bài toán đồng dạng từ đơn giản đến phức

tạp để có kết quả cuối cùng

Trang 7

… return <Giá trị>;

}

… <Tên hàm>(<Đối số>); … }

Trang 9

3.3 Phân loại đệ qui

… return <Giá trị>;

}

… <Tên hàm>(<Đối số>); …

… <Tên hàm>(<Đối số>); …

Trang 11

3.3 Phân loại đệ qui

Đệ quy hỗ tương

Trong thân hàm này có lời gọi hàm tới hàm kia và ngược lại

<Kiểu trả về> <Tên hàm 1>(<Tham số>)

Trang 12

Điều kiện dừng: x(0) = 1, y(0) = 0 long xn(int n)

Trang 13

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 chính nó được đặt bên trong thân vòng lặp.

<Kiểu trả về> <Tên hàm>(<Tham số>)

{

if (<Điều kiện dừng>) {

… return <Giá trị>;

}

… Vòng lặp {

… <Tên hàm>(<Đối số>);

Trang 14

3.3 Phân loại đệ qui

Đệ quy phi tuyến

Trang 15

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

Tổng quát hóa bài toán cụ thể thành bài toán tổng quát

Thông số hóa bài toán tổng quát

Các trường hợp suy biến của bài toán

Trang 16

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

 Công thức đệ quy chưa đúng, không tìm được bài toán đồng dạng đơn giản hơn

 Không xác định các trường hợp suy biến – neo (điều kiện dừng)

 Thông điệp thường gặp là StackOverflow do:

- Thuật giải đệ quy đúng nhưng số lần gọi đệ quy quá lớn làm tràn STACK

- Thuật giải đệ quy sai do không hội tụ hoặc không có điều kiện dừng

Trang 18

{ Phân A thành các bài toán con A1, A2, …, Am

for ( i = 1; i <= n; i++) DivideConquer(Ai, xi);

Kết hợp các nghiệm xi của Ai để nhận được x của A

}

}

Trang 19

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

Phương pháp quay lui

- Tại bước có nhiều lựa chọn, ta chọn thử 1 bước để đi tiếp

- Nếu không thành công thì “lần ngược” chọn bước khác.

- Nếu đã thành công thì ghi nhận lời giải này đồng thời “lần ngược” để truy tìm lời giải mới

- Thích hợp giải các bài toán kinh điển như bài toán 8 hậu

và bài toán mã đi tuần

Trang 20

Tổng kết

 Chỉ nên dùng phương pháp đệ quy để giải các bài toán kinh điển như giải các vấn đề “chia để trị”, “lần ngược”

 Vấn đề đệ quy không nhất thiết phải giải bằng phương pháp đệ quy,

có thể sử dụng phương pháp khác thay thế (khử đệ quy)

 Phương pháp đệ qui tiện cho người lập trình nhưng không tối ưu khi chạy trên máy

 Bước đầu nên giải bằng đệ quy nhưng từng bước khử đệ quy để nâng cao hiệu quả

Ngày đăng: 29/08/2019, 20:12

TỪ KHÓA LIÊN QUAN

w