
Bài giảng cơ sở lập trình nâng cao - Chương 3
lượt xem 7
download

Các thành phần của 1 định nghĩa theo cách đệ quy.Thành phần 1: Thành phần không đệ quy (trường hợp cơ bản, trường hợp cơ sở, trường hợp suy biến, điều kiện dừng).Chứa những trường hợp đơn giản nhất để xây dựng nên tập hợp. Thành phần 2: Thành phần đệ quy (trường hợp đệ quy).Chứa những quy tắc, công thức để tạo đối tượng mới từ những đối tượng trước đó
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng cơ sở lập trình nâng cao - Chương 3
- Chương 3 LẬP TRÌNH ĐỆ QUY 1
- Nội dung § Định nghĩa theo cách đệ quy § Cài đặt Hàm đệ quy § Hoạt động của Hàm đệ quy § Phân loại đệ quy § Ứng dụng của đệ quy § Ưu điểm và khuyết điểm của đệ quy § Một số phương pháp khử đệ quy § Bài tập áp dụng 2
- Định nghĩa theo cách đệ quy § Định nghĩa theo cách đệ quy: Định nghĩa theo cách đệ quy của một khái niệm là định nghĩa khái niệm mới đó thông qua chính khái niệm đang muốn định nghĩa. § Ví dụ: Định nghĩa tập số tự nhiên N • 0N • Nếu n N thì n+1 N 3
- Định nghĩa theo cách đệ quy § Mục đích của đệ quy: • Tạo ra các phần tử mới • Kiểm tra một phần tử có thuộc tập đã cho hay không § Dùng định nghĩa theo cách đệ quy để định nghĩa các hàm hay chuỗi số (Hàm đệ quy, công thức đệ quy) • Ví dụ 1: 1 Nếu n=0 n!= n . (n − 1)! Nếu n>0 4
- Định nghĩa theo cách đệ quy • Ví dụ 2: 1 Nếu n=0 f ( n) = 1 f (n − 1) + Nếu n>0 f (n − 1) • Ví dụ 3: Công thức tính số Fibonacci 1 Nếu n=1 hay n=2 f ( n) = f (n − 1) + f (n − 2) Nếu n>2 5
- Định nghĩa theo cách đệ quy § Các thành phần của 1 định nghĩa theo cách đệ quy • Thành phần 1: Thành phần không đệ quy (trường hợp cơ bản, trường hợp cơ sở, trường hợp suy biến, điều kiện dừng) – Chứa những trường hợp đơn giản nhất để xây dựng nên tập hợp • Thành phần 2: Thành phần đệ quy (trường hợp đệ quy) – Chứa những quy tắc, công thức để tạo đối tượng mới từ những đối tượng trước đó § Nhận xét: Thành phần đệ quy phải tiến về thành ph ần không đệ quy 6
- Định nghĩa theo cách đệ quy § Làm thế nào để tìm công thức đệ quy? • Chia bài toán f(n) thành các bài toán con f(1), f(2), …, f(n-1) có dạng giống bài toán f(n) • Tìm mối quan hệ giữa bài toán lớn với bài toán con § Vấn đề khó khăn • Bao nhiêu bài toán con? • Chọn bài toán con nào? 7
- Định nghĩa theo cách đệ quy § Các bước gợi ý tìm công thức đệ quy f(n) • B1: Chọn một bài toán con f(k) (thường là f(n-1), f(n-2)) • B2: Tìm mối quan hệ giữa f(n) với f(k) • B3: Nếu tìm được mối quan hệ thì Tìm trường hợp cơ sở Nhảy đến B5 • B4: Ngược lại quay về B1 chọn bài toán con khác, nếu thấy không khả quan thì chọn một số bài toán con • B5: Kết thúc 8
- Định nghĩa theo cách đệ quy § Tìm định nghĩa đệ quy để tính tổng/tích của mảng số nguyên a có n phần tử (n≤100) 9
- Định nghĩa theo cách đệ quy § Tìm định nghĩa đệ quy để kiểm tra số nguyên n là số chẵn hay số lẻ (không dùng phép toán % và &) 10
- Định nghĩa theo cách đệ quy § Tìm định nghĩa đệ quy để tính độ dài của chuỗi s 11
- Định nghĩa theo cách đệ quy § Tìm định nghĩa đệ quy để kiểm tra chuỗi s có chứa ký tự ch không 12
- Định nghĩa theo cách đệ quy § Tìm định nghĩa đệ quy để đảo mảng số nguyên a có n phần tử (n≤100) 13
- Định nghĩa theo cách đệ quy § Hạn chế của định nghĩa Đệ quy • Để tính f(n), chúng ta phải tính một vài hay tất cả các phần tử trước đó f(1), f(2), … • Để kiểm tra x có thuộc tập hợp đang định nghĩa hay không chúng ta cũng phải tính f(1), f(2), … Tìm định nghĩa không đệ quy tương đương 14
- Định nghĩa theo cách đệ quy § Tìm định nghĩa không đệ quy của công thức đệ quy sau: 1 Nếu n=0 n!= n . (n − 1)! Nếu n>0 1 Nếu n=0 f ( n) = 2 . f (n − 1) Nếu n>0 15
- Cài đặt Hàm đệ quy § Hàm/thủ tục Đệ quy: Một hàm A được gọi là Hàm Đệ quy nếu trong định nghĩa hàm A có lời gọi đến chính hàm A KieuTraVe TenHam(Danh Sach Tham So) { … TenHam(); … } 16
- Cài đặt Hàm đệ quy § Sơ đồ cài đặt • Sơ đồ 1: KieuTraVe TenHam(Kieu n) { if (dieukien dung) [return] kq; else [return] TenHam(n-1) … } 17
- Cài đặt Hàm đệ quy § Sơ đồ cài đặt • Sơ đồ 2: KieuTraVe TenHam(Kieu n) { if (dieukien dequy) [return] TenHam(n-1)…; else [return] kq; } 18
- Cài đặt Hàm đệ quy § Ví dụ: Cài đặt hàm đệ quy tính n! int Factorial(int n) { } 19
- Hoạt động của Hàm đệ quy § Tìm hiểu hoạt động của hàm đệ quy tính an 1 Nếu n=0 a = n a . a n −1 Nếu n>0 double Power(double a, int n) { } 20

CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cơ sở lập trình: Ngôn ngữ lập trình C/C++ - Trịnh Tấn Đạt
142 p |
31 |
9
-
Bài giảng Cơ sở lập trình 1: Giới thiệu môn học - Lê Quý Tài
9 p |
157 |
8
-
Bài giảng Cơ sở lập trình Csharp: Bài 4 - Cấu trúc lặp
17 p |
94 |
4
-
Bài giảng Cơ sở lập trình: Chương 1 - Thuật toán và thuật giải
30 p |
37 |
4
-
Bài giảng Cơ sở lập trình: Chương 4 - Các cấu trúc điều khiển
41 p |
34 |
3
-
Bài giảng Cơ sở lập trình: Chương 2 - Tổng quan về lập trình máy tính
14 p |
30 |
3
-
Bài giảng Cơ sở lập trình: Chương 1 - Khái niệm lập trình
428 p |
30 |
3
-
Bài giảng Cơ sở lập trình - Trường ĐH Thương mại
108 p |
68 |
3
-
Bài giảng Cơ sở lập trình: Các phần tử cơ bản của ngôn ngữ C
55 p |
24 |
2
-
Bài giảng Cơ sở lập trình: Các cấu trúc điều khiển trong ngôn ngữ C
38 p |
22 |
2
-
Bài giảng Cơ sở lập trình: Các khái niệm cơ bản về lập trình
20 p |
21 |
2
-
Bài giảng Cơ sở lập trình: Ngôn ngữ lập trình C - Trịnh Tấn Đạt
142 p |
14 |
2
-
Bài giảng Cơ sở lập trình: Thuật toán - Trịnh Tấn Đạt
40 p |
6 |
1
-
Bài giảng Cơ sở lập trình: Giới thiệu môn học và khái niệm Thuật toán - Trịnh Tấn Đạt
15 p |
4 |
1
-
Bài giảng Cơ sở lập trình: Các cấu trúc điều khiển - Trịnh Tấn Đạt
78 p |
1 |
0
-
Bài giảng Cơ sở lập trình: Chương trình con và hàm - Trịnh Tấn Đạt
64 p |
6 |
0
-
Bài giảng Cơ sở lập trình: Mảng - Trịnh Tấn Đạt
112 p |
4 |
0
-
Bài giảng Cơ sở lập trình: Kiểu cấu trúc - Trịnh Tấn Đạt
35 p |
9 |
0


Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
