ĐỆ QUY (Recursion)
lượt xem 122
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: ĐỆ QUY (Recursion)
- Chương 2: Ch ĐỆ QUY (Recursion)
- NộI DUNG Đệ quy (recursion) 1. Các loại đệ quy (types of recursion) 2. 2
- 1. Đệ 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 ◦ 3 Chương 2: Hàm – Đệ quy
- 1. Đệ 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 4 Chương 2: Hàm – Đệ quy
- 1. Đệ quy (Recursion) – GT.41 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(n1); } 5 Chương 2: Hàm – Đệ quy
- 1. Đệ quy (Recursion) Minh họa Gọi hàm answer
- 1. Đệ quy (Recursion) Minh họa Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa Chưa xong: 3*GT(2) GT. 3rd: N=3, Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa Chưa xong: 2*GT(1) GT. 4th: N=2, Chưa xong: 3*GT(2) GT. 3rd: N=3, Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa Chưa xong: 1*GT(0) GT. 5th: N=1, Chưa xong: 2*GT(1) GT. 4th: N=2, Chưa xong: 3*GT(2) GT. 3rd: N=3, Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa GT. 6th: N=0, xong: returns 1 Chưa xong: 1*GT(0) GT. 5th: N=1, Chưa xong: 2*GT(1) GT. 4th: N=2, Chưa xong: 3*GT(2) GT. 3rd: N=3, Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa GT. 5th: N=1, xong: returns 1*1 Chưa xong: 2*GT(1) GT. 4th: N=2, Chưa xong: 3*GT(2) GT. 3rd: N=3, Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa GT. 4th: N=2, xong: returns 2*1 Chưa xong: 3*GT(2) GT. 3rd: N=3, Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa GT. 3rd: N=3, xong: returns 3*2 Chưa xong: 4*GT(3) GT. 2nd: N=4, Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa GT. 2nd: N=4, xong: returns 4*6 Chưa xong: 5*GT(4) GT. 1st: N=5, Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa GT. 1st: N=5, xong: returns 5*24 Chưa xong: answer
- 1. Đệ quy (Recursion) Minh họa CT chính: xong: answer
- 1. Đệ quy (Recursion) Ví dụ 2: Tính bằng đệ quy Dãy số Fibonaci: F1 = F2 = 1; Fn = Fn1 + Fn2. (n ≥ 3) int Fibo(int n) { if (n≤ 2) // điểm dừng return 1; else return Fibo(n1)+Fibo(n2); } 19 Chương 2: Hàm – Đệ quy
- 1. Đệ quy (Recursion) Nhận xét: Thông thường thay vì sử dụng lời giải đệ quy cho một ◦ bài toán, ta có thể thay thế bằng lời giải không đệ quy (khử đệ quy) bằng phương pháp lặp. Việc sử dụng giải thuật đệ quy có: ◦ Ưu điểm Khuyết điểm Thuận lợi cho việc không được Có khi biểu diễn bài toán tối ưu về thời gian Ngắn gọn Có thể gây tốn bộ nhớ ◦ Chính vì vậy, trong lập trình người ta cố tránh sử dụng thủ tục đệ quy nếu thấy không cần thiết. 20 Chương 3: Hàm – Đệ quy
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Đệ quy và thuật toán đệ quy
0 p | 344 | 108
-
Cấu trúc dữ liệu (chương 6)
46 p | 146 | 46
-
Bài tập Lập trình python: Phần 1
91 p | 28 | 22
-
Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 2: Hàm - đệ quy (function - recursion)
65 p | 98 | 19
-
Bài giảng Kỹ thuật lập trình - Chapter 1: Mathematical induction and recursive programming
116 p | 68 | 7
-
Bài giảng Lý thuyết tính toán: Chương 5 - PGS.TS. Phan Huy Khánh
6 p | 65 | 6
-
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 2 - Châu Thị Bảo Hà
72 p | 79 | 4
-
Bài giảng Cấu trúc dữ liệu và giải thuật – Bài 3: Đệ quy (Recursion)
39 p | 41 | 3
-
Bài giảng Thuật toán nâng cao: Chương 4 - Nguyễn Thanh Bình
15 p | 47 | 1
-
Đánh giá các thuật toán ước lượng mù trong bù sai lệch định thời cho các bộ ADC ghép xen thời gian
5 p | 21 | 1
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