1. Trang chủ
  2. » Tất cả

kỹ thuật lập trình,đặng bình phương,dhkhtnhcm

9 2 0
Tài liệu đã được kiểm tra trùng lặp

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 343,17 KB

Nội dung

kỹ thuật lập trình,đặng bình phương,dhkhtnhcm Đệ qui Giáo trình Bài Tập Kỹ Thuật Lập Trình Trang 109 CHƯƠNG 9 ĐỆ QUI Giới thiệu phương pháp lập trình theo kỹ thuật đệ quy, phân loại, cách hoạt động và[.]

Đệ qui CHƯƠNG ĐỆ QUI Giới thiệu phương pháp lập trình theo kỹ thuật đệ quy, phân loại, cách hoạt động cách cài đặt hàm đệ quy I TÓM TẮT LÝ THUYẾT I.1 Khái niệm Một hàm gọi có tính đệ qui thân hàm có lệnh gọi lại c om cách tường minh hay tiềm ẩn I.2 Phân loại đệ qui ng • Đệ qui tuyến tính co • Đệ qui nhị phân • Đệ qui phi tuyến th Đệ qui tuyến tính g a an • Đệ qui hỗ tương du on Trong thân hàm có lời gọi hàm gọi lại cách tường minh cu u TenHam () { if (điều kiện dừng) { //Trả giá trị hay kết thúc công việc } //Thực số cơng việc (nếu có) TenHam (); //Thực số cơng việc (nếu có) } Ví dụ 1: Tính S (n) = + + + L + n Trước cài đặt hàm đệ qui ta xác định: - Điều kiện dừng: S(0) = - Qui tắc (cơng thức) tính: S(n) = S(n-1) + n Ta cài đặt hàm đệ qui sau: Giáo trình Bài Tập Kỹ Thuật Lập Trình CuuDuongThanCong.com Trang 109 https://fb.com/tailieudientucntt Đệ qui long TongS (int n) { if(n==0) return 0; return ( TongS(n-1) + n ); } Ví dụ 2: Tính P(n) = n! Trước cài đặt hàm đệ qui ta xác định: - Điều kiện dừng: P( 0) = 0! = - Qui tắc (cơng thức) tính: P(n) = P(n-1) * n b co ng long GiaiThua (int n) { if(n==0) return 1; return ( GiaiThua(n-1) * n ); } c om Ta cài đặt hàm đệ qui sau: Đệ qui nhị phân th minh an Trong thân hàm có hai lời gọi hàm gọi lại cách tường cu u du on g TenHam () { if (điều kiện dừng) { //Trả giá trị hay kết thúc công việc } //Thực số cơng việc (nếu có) TenHam (); //Giải vấn đề nhỏ //Thực số cơng việc (nếu có) TenHam (); //Giải vấn đề lại //Thực số cơng việc (nếu có) } Ví dụ 1: Tính số hạng thứ n dãy Fibonaci định nghĩa sau: f1 = f0 =1 ; fn = fn-1 + fn-2 ; (n>1) Trước cài đặt hàm đệ qui ta xác định: - Điều kiện dừng: f(0) = f(1) = Ta cài đặt hàm đệ qui sau: Giáo trình Bài Tập Kỹ Thuật Lập Trình CuuDuongThanCong.com Trang 110 https://fb.com/tailieudientucntt Đệ qui long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n-1) + Fibonaci(n-2); } Ví dụ 2: Cho dãy số nguyên a gồm n phần tử có thứ tự tăng dần Tìm phần tử có giá trị x có xuất mảng không? Trước cài đặt hàm đệ qui ta xác định: - Điều kiện dừng: Tìm thấy x xét hết phần tử .c om - Giải thuật: Do dãy số có thứ tự tăng nên ta áp dụng cách tìm kiếm theo phương pháp nhị phân Ý tưởng phương pháp bước ta tiến hành so sánh x với phần tử nằm vị trí ng dãy để thu hẹp phạm vi tìm co Gọi: l: biên trái dãy (ban đầu l=0) an r: biên phải dãy (ban đầu r = n-1) m: vị trí (m = (l+r)/2) g È th l du on a[0] a[1] … m R È È a[(l+r)/2] … a[n-2] a[n-1] Thu hẹp dựa vào giá trị phần tử giữa, có hai trường hợp: cu u i Nếu x lớn phần tử x xuất bên phải vị trí (từ m+1 đến r) ii Ngược lại x nhỏ phần tử x xuất bên trái vị trí (từ l đến m-1) Quá trình thực gặp phần tử có giá trị x, xét hết phần tử Ta cài đặt hàm đệ qui sau: int TimNhiPhan(int a[], int l, int r, int x) { int m = (l+r)/2; if(l>r) return -1;// Không có phần tử x if(a[m]>x) return TimNhiPhan(a, l, m-1, x); if(a[m] 10 Tính S (n) = + 1.2 + 1.2.3 + L + 1.2.3K n , với n > 11 Tính S (n) = 12 + 2 + + L + n , với n ≥ với n > Giáo trình Bài Tập Kỹ Thuật Lập Trình CuuDuongThanCong.com Trang 116 https://fb.com/tailieudientucntt Đệ qui n với n > 12 Tính S (n) = + + + L + , 13 Tính S (n) = + 14 Tính P ( x, y ) = x y 15 Tính S (n) = + (1 + 2) + (1 + + 3) + L + (1 + + + L + n) , 1 + +L+ , 1+ 1+ + 1+ + +L+ n với n > với n > II.2 Bài tập luyện tập nâng cao Cho số nguyên dương n In biểu diễn nhị phân n 17 (*) Cài đặt minh hoạ toán tháp Hà Nội 18 (**) Cài đặt toán mã tuần 19 (**) Cài đặt toán tám hậu 20 (*) Tính S (n) = n + (n − 1) + (n − 2) + + , 21 (*) Tính S (n) = + + + + n , 22 (*) Tính S (n) = co ng c om 16 an 1 1+ th 1+ du on g 1+ O với n > với n > có n dấu phân số 1 1+ 1+1 Đệ qui cung cấp cho ta chế giải toán phức tạp cách đơn cu ™ u III KẾT LUẬN giản ™ Xây dựng hàm đệ qui thông qua việc xác định điều kiện dừng bước thực ™ Chỉ nên cài đặt phương pháp đệ qui khơng cịn cách giải cách lặp thơng thường Giáo trình Bài Tập Kỹ Thuật Lập Trình CuuDuongThanCong.com Trang 117 https://fb.com/tailieudientucntt ... ta xác định: - Điều kiện dừng: f(0) = f(1) = Ta cài đặt hàm đệ qui sau: Giáo trình Bài Tập Kỹ Thuật Lập Trình CuuDuongThanCong.com Trang 110 https://fb.com/tailieudientucntt Đệ qui long Fibonaci... if(a[m]

Ngày đăng: 25/11/2022, 17:03

w