Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 2: Hàm - đệ quy (function - recursion)
lượt xem 20
download
Nội dung chính của chương 2 Hàm - đệ quy nằm trong bài giảng cấu trúc dữ liệu và thuật toán nhằm trình bày về các nội dung chính như sau: hàm, khái niệm ngăn xếp, quá trình thực thi hàm, tham số hàm, biến toàn cục (global) và cục bộ (local) đệ quy, các loại đệ quy.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 2: Hàm - đệ quy (function - recursion)
- Chương 2: HÀM - ĐỆ QUY (Function - Recursion)
- NỘI DUNG 1. Hàm (function) 2. Khái niệm ngăn xếp (stack) 3. Quá trình thực thi hàm 4. Tham số hàm 5. Biến toàn cục (global) và cục bộ (local) 6. Đệ quy (recursion) 7. Các loại đệ quy (types of recursion) 2
- 1. Hàm khả năng lập trình theo modul chia nhỏ thao tác tránh lặp lại một thao tác #include int add (int x, int y) { int z; z = x + y; return (z); } void main () { int i, j, k; i = 10; j = 20; k = add(i, j); cout
- NỘI DUNG 1. Hàm (function) 2. Khái niệm ngăn xếp (stack) 3. Quá trình thực thi hàm 4. Tham số hàm 5. Biến toàn cục (global) và cục bộ (local) 6. Đệ quy (recursion) 7. Các loại đệ quy (types of recursion) 4
- 2. Khái niệm ngăn xếp (stack) Stack là phần bộ nhớ mà trong đó các giá trị của nó được lưu vào (Push) và lấy ra (Pop) theo kiểu “last in first out” 5 Chương 2: Hàm – Đệ quy
- NỘI DUNG 1. Hàm (function) 2. Khái niệm ngăn xếp (stack) 3. Quá trình thực thi hàm 4. Tham số hàm 5. Biến toàn cục (global) và cục bộ (local) 6. Đệ quy (recursion) 7. Các loại đệ quy (types of recursion) 6
- 3. Quá trình thực thi hàm Khi hàm được gọi, vị trí lệnh hiện tại sẽ tạm thời bị dừng và điều khiển sẽ chạy đến hàm được gọi Sau khi hàm được thực thi xong, điều khiển sẽ quay trở về vị trí đã bị dừng tạm thời để thi hành tiếp Để biết được chính xác vị trí để quay trở về, máy tính sẽ lưu địa chỉ của lệnh kế tiếp lúc bị dừng vào stack → Như vậy: ◦ Trước khi thực thi hàm, máy tính sẽ lưu (Push) địa chỉ lệnh kế tiếp vào stack ◦ Khi hàm được thực thi xong, máy tính sẽ lấy (Pop) địa chỉ đó ra để thực hiện tiếp 7 Chương 2: Hàm – Đệ quy
- 3. Quá trình thực thi hàm 1 2 3 4 5 6 7 8 9 10 Kết quả??? 11 12 13 14 15 16 17 18 19 20 8 21 Chương 2: Hàm – Đệ quy
- NỘI DUNG 1. Hàm (function) 2. Khái niệm ngăn xếp (stack) 3. Quá trình thực thi hàm 4. Tham số hàm 5. Biến toàn cục (global) và cục bộ (local) 6. Đệ quy (recursion) 7. Các loại đệ quy (types of recursion) 9
- 4. Tham số hàm 1. Tham số hàm là tham trị (value): giá trị tham số truyền trước và sau khi gọi hàm là như nhau 2. Tham số hàm là tham chiếu (reference): giá trị tham số truyền sẽ được thay đổi sau khi gọi hàm 10 Chương 2: Hàm – Đệ quy
- 4. Tham số hàm void f1 (int k) void f1 (int &k) { { k = k + 10; k = k + 10; } } void main( ) void main( ) { { int i; int i; i = 0; i = 0; cout
- NỘI DUNG 1. Hàm (function) 2. Khái niệm ngăn xếp (stack) 3. Quá trình thực thi hàm 4. Tham số hàm 5. Biến toàn cục (global) và cục bộ (local) 6. Đệ quy (recursion) 7. Các loại đệ quy (types of recursion) 12
- 5. Biến toàn cục và cục bộ #include int i =0; // Global variable void f1() { int i=0; // local variable for f1 i = 50; Kết quả??? } void main() { int i ; // local variable for main f1() ; i =0; cout
- NỘI DUNG 1. Hàm (function) 2. Khái niệm ngăn xếp (stack) 3. Quá trình thực thi hàm 4. Tham số hàm 5. Biến toàn cục (global) và cục bộ (local) 6. Đệ quy (recursion) 7. Các loại đệ quy (types of recursion) 14
- 6. Đệ quy (Recursion) Là một phương pháp lập trình cho phép một hàm có thể gọi lại chính nó trực tiếp hoặc gián tiếp. Ví dụ: void Test() { Test(); } Một chương trình đệ quy hoặc một định nghĩa đệ quy thì không thể gọi đến chính nó mãi mãi mà phải có một điểm dừng đến một trường hợp đặc biệt nào đó, mà ta gọi là trường hợp suy biến (degenerate case). Ví dụ: Ta định nghĩa n! như sau: n * (n - 1)! n! 0! 1 15 Chương 2: Hàm – Đệ quy
- 6. Đệ quy (Recursion) Phương pháp thiết kế một giải thuật đệ quy: ◦ Tham số hoá bài toán ◦ Phân tích trường hợp chung : đưa bài toán dưới dạng bài toán cùng loại nhưng có phạm vi giải quyết nhỏ hơn theo nghiã dần dần sẽ tiến đến trường hợp suy biến ◦ Tìm trường hợp suy biến 16 Chương 2: Hàm – Đệ quy
- 6. Đệ quy (Recursion) Chương trình đệ quy gồm hai phần chính: 1. Phần cơ sở: Điều kiện thoát khỏi đệ quy (điểm dừng) 2. Phần đệ quy: Trong phần thân chương trình có lời gọi đến chính bản thân chương trình với giá trị mới của tham số nhỏ hơn giá trị ban đầu 17 Chương 2: Hàm – Đệ quy
- 6. Đệ quy (Recursion) Ví dụ 1 : Lập hàm tính n! bằng đệ quy n * (n - 1)! n! 0! 1 int GT(int n) { if (n==0) // điểm dừng return 1; else return n*GT(n-1); } 18 Chương 2: Hàm – Đệ quy
- 6. Đệ quy (Recursion) Minh họa Gọi hàm answer
- 6. Đệ quy (Recursion) Minh họa GT. 1st: N=5, Chưa xong: 5*GT(4) CT chính: Chưa xong: answer
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Cấu trúc dữ liệu - Bài 1:Tổng quan về cấu trúc dữ liệu và giải thuật
47 p | 174 | 17
-
Bài giảng Cấu trúc dữ liệu 1: Chương 1 - Lương Trần Hy Hiến
7 p | 162 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật trong C++ - Bài 8: Cấu trúc dữ liệu ngăn xếp
28 p | 77 | 9
-
Bài giảng Cấu trúc dữ liệu giải thuật: Các kiểu dữ liệu trừu tượng cơ bản - Cấu trúc dữ liệu tuyến tính
92 p | 116 | 9
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây đỏ đen - Bùi Tiến Lên
25 p | 79 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 17: Cấu trúc dữ liệu dạng cây
21 p | 77 | 8
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Các cấu trúc dữ liệu
193 p | 57 | 7
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (2016)
62 p | 94 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Trần Minh Thái (Trường Đại học Hồng Bàng )
62 p | 158 | 6
-
Bài giảng Cấu trúc dữ liệu - Chương 3: Cấu trúc cây
65 p | 58 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AA - Bùi Tiến Lên
30 p | 35 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 – Trần Minh Thái (2017)
67 p | 106 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây - Bùi Tiến Lên
68 p | 40 | 4
-
Bài giảng Cấu trúc dữ liệu: Chương 1 - ThS. Thiều Quang Trung (2018)
44 p | 43 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Cấu trúc dữ liệu cây AVL - Bùi Tiến Lên
38 p | 47 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 5 - Ngô Quang Thạch
24 p | 58 | 3
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Th.S Thiều Quang Trung
41 p | 68 | 3
-
Bài giảng Cấu trúc dữ liệu giải thuật: Cấu trúc dữ liệu
17 p | 50 | 2
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