Giáo án điện tử chuyên đề Khoa học máy tính 11 kết nối Bài 3: Thực hành giải toán theo kĩ thuật đệ quy
Tải giáo án điện tử Chuyên đề học tập Tin học 11 - Khoa học máy tính (kết nối tri thức) Bài 3: Thực hành giải toán theo kĩ thuật đệ quy. Bộ giáo án chuyên đề được thiết kế sinh động, đẹp mắt. Thao tác tải về đơn giản, dễ dàng sử dụng và chỉnh sửa. Thầy, cô kéo xuống để xem chi tiết.
Xem: => Giáo án tin học 11 theo định hướng khoa học máy tính kết nối tri thức
Click vào ảnh dưới đây để xem 1 phần giáo án rõ nét












Xem toàn bộ: Giáo án điện tử chuyên đề Tin học 11 - Khoa học máy tính Kết nối tri thức
CHÀO MỪNG CÁC EM ĐẾN VỚI BÀI HỌC NGÀY HÔM NAY!
KHỞI ĐỘNG
Khi áp dụng kĩ thuật đệ quy để giải các bài toán, theo em cần phải đặc biệt lưu ý đến điều gì?
BÀI 3: THỰC HÀNH GIẢI TOÁN THEO KĨ THUẬT ĐỆ QUY
NHIỆM VỤ 1
Bài toán biến đổi số nhị phân sang số thập phân
Yêu cầu: Đầu vào của bài toán là một xâu nhị phân bất kì, ở đây xâu nhị phân được hiểu là xâu chỉ bao gồm các chữ số 0 và 1. Xâu này là biểu diễn của một số tự nhiên n trong hệ đếm nhị phân. Yêu cầu của bài toán là tìm số thập phân tương ứng với biểu diễn nhị phân của xâu đầu vào. Bài toán cần giải bằng kĩ thuật đệ quy.
HƯỚNG DẪN
- Phân tích: Gọi s là xâu kí tự nhị phân đầu vào có độ dài n:
- Vì các kí tự của xâu có thể biểu diễn thông qua chỉ số nên xâu s có thể được coi là một dãy các chữ số 0, 1 như sau:
- Chúng ta sẽ thiết kế hàm dec(s, n) để tính giá trị số thập phân có biểu diễn nhị phân theo dãy (1).
- Nếu M được biểu diễn bằng số nhị phân dạng a0a1…an-1 thì ta có công thức:
- Biến đổi công thức, ta có:
- Nếu gọi dec(s, n) là số thập phân cần tìm của dãy nhị phân (1) thì công thức (2) sẽ cho chúng ta công thức truy hồi sau:
- Áp dụng công thức (3) vào bài toán, hàm đệ quy dec(s,n) được thiết kế như sau:
1 def dec(s, n): 2 if n == 1: 3 return int(s[0]) 4 else: 5 return 2*dec(s, n - 1) + int(s[n - 1]) |
Công thức
Công thức tại dòng lệnh 5 ở trên chính là công thức (3)
Lệnh gọi hàm như sau:
dec(s, len(s))
NHIỆM VỤ 2
Tìm ước chung lớn nhất của hai số nguyên không âm
Yêu cầu: Cho trước hai số nguyên a, b không âm, không đồng thời bằng 0. Ước chung lớn nhất của hai số này sẽ kí hiệu là ƯCLN(a,b). Bài toán yêu cầu tính gcd(a,b) với a,b cho trước.
HƯỚNG DẪN
- Nếu a = b thì ƯCLN sẽ chính là các số này, ngược lại nếu hai số này không bằng nhau, ví dụ a > b thì chúng ta biền đổi số lớn hơn bằng cách trừ đi số kia, ví dụ đặt a = a - b.
- Quá trình như vậy sẽ tiếp tục và kết thúc khi a = b, chúng ta tìm được ƯCLN.
Cách tính tự nhiên
STT | a | b | a%b | Ghi chú |
1 | 12 | 9 | 3 | |
2 | 9 | 3 | 0 | |
3 | 3 | 0 | Nếu b = 0 thì dừng lại, thông báo ƯCLN = a |
Bảng 3.1. Quy trình tính toán hàm gcd()
Cách tính nhanh theo thuật toán Euclid
1
Nếu b = 0 thì gcd(a, 0) = a.
2
Nếu b > 0 thì gcd(a, b) = gcd(b,a mod b).
1 def gcd(a, b): 2 if b == 0: 3 return a 4 else: 5 return gcd(b, a%b) |
LUYỆN TẬP
- Câu 1. Mô tả các bước tính gcd(93, 60).
- Câu 2. Viết chương trình chuyển đổi số nhị phân sang số thập phân (tương tự nhiệm vụ 1) nhưng dãy nhị phân đầu vào được cho dưới dạng một dãy (list) các số 0 và 1. Ví dụ nếu dãy đầu vào là A= [1, 1, 1, 1, 1, 1, 1] thì kết quả đầu ra là 127.
Hướng dẫn thực hiện
Các bước tính gcd(93,60) như sau.
1
- Bước 1. gcd(93,60) = gcd(60, 33)
- Bước 2, gcd(60,33) = gcd(33,27)
- Bước 3. gcd(33,27) = gcd(27,6)
- Bước 4. gcd(27,6) = gcd(6,3)
- Bước 5. gcd(6,3) = gcd(3,0) = 3
Chương trình này tương tự chương trình của Nhiệm vụ 1.
2
1 def decimal(A,n): 2 if n == 0: 3 return 0 4 elif n == 1: 5 return A[0] 6 else: 7 return 2*decimal(A,n-1) + A[n-1] |
VẬN DỤNG
Bài 1. Bài toán tính ƯCLN của hai số nguyên dương a, b có một cách tính khác như sau:
1 def gcd(a, b): 2 while a ! = b: 3 if a < b: 4 b = b - a 5 else: 6 a = a - b 7 return a |
Hãy viết lại chương trình trên theo kĩ thuật đệ quy.
HƯỚNG DẪN
1 def gcd(a, b): 2 if a == b: 3 return a 4 else: 5 if a > b: 6 return gcd(a-b,b) 7 else: 8 return gcd(a,b-a) |
VẬN DỤNG
Bài 2. Thiết lập chương trình hàm gcd(a,b) – ƯCLN của các số nguyên không âm a, b theo thuật toán Euclid nhưng không sử dụng kĩ thuật đệ quy.
HƯỚNG DẪN
1 def gcd(a, b): 2 while b ! = 0: 3 r = a % b 4 a = b 5 b = r 6 return a |
Bài 3. Lớp An tiến hành đo chiều cao của cả lớp, kết quả lưu vào một tệp có tên chieucao.inp, trong tệp ghi lần lượt họ tên các bạn trong lớp và chiều cao tương ứng. Thầy Hiệu trưởng yêu cầu tổng kết và gửi lại cho Ban giám hiệu tên và chiều cao của bạn thấp nhất và cao nhất lớp, kết quả phải lưu ra tệp ketqua.out. Em hãy giúp bạn An viết chương trình giải quyết yêu cầu này theo kĩ thuật đệ quy.
Ví dụ thông tin đầu vào và ra của bài toán sẽ như sau:
chieucao.inp |
Nguyễn Việt Hà 1.75 Bùi Quang Mơ 1.66 Trương Thị Lộc 1.50 Trần Văn Hóa 1.78 |
ketqua.out |
Trương Thị Lộc 1.50 Trần Văn Hóa 1.78 |
HƯỚNG DẪN
--------------- Còn tiếp ---------------
Trên chỉ là 1 phần của giáo án. Giáo án khi tải về có đầy đủ nội dung của bài. Đủ nội dung của học kì I + học kì II
Hệ thống có đầy đủ các tài liệu:
- Giáo án word (350k)
- Giáo án Powerpoint (400k)
- Trắc nghiệm theo cấu trúc mới (200k)
- Đề thi cấu trúc mới: ma trận, đáp án, thang điểm..(200k)
- Phiếu trắc nghiệm câu trả lời ngắn (200k)
- Trắc nghiệm đúng sai (250k)
- Lý thuyết bài học và kiến thức trọng tâm (200k)
- File word giải bài tập sgk (150k)
- Phiếu bài tập để học sinh luyện kiến thức (200k)
Nâng cấp lên VIP đê tải tất cả ở tài liệu trên
- Phí nâng cấp VIP: 800k
=> Chỉ gửi 450k. Tải về dùng thực tế. Nếu hài lòng, 1 ngày sau mới gửi phí còn lại
Cách nâng cấp:
- Bước 1: Chuyển phí vào STK: 1214136868686 - cty Fidutech - MB(QR)
- Bước 2: Nhắn tin tới Zalo Fidutech - nhấn vào đây để thông báo và nhận tài liệu
Xem toàn bộ: Giáo án điện tử chuyên đề Tin học 11 - Khoa học máy tính Kết nối tri thức
ĐẦY ĐỦ GIÁO ÁN CÁC BỘ SÁCH KHÁC
GIÁO ÁN WORD LỚP 11 KẾT NỐI TRI THỨC
GIÁO ÁN POWERPOINT LỚP 11 KẾT NỐI TRI THỨC
GIÁO ÁN CHUYÊN ĐỀ LỚP 11 KẾT NỐI TRI THỨC
GIÁO ÁN DẠY THÊM 11 KẾT NỐI TRI THỨC
CÁCH ĐẶT MUA:
Liên hệ Zalo: Fidutech - nhấn vào đây