Bài 3: Thực Hành Giải Toán Theo Kĩ Thuật Đệ Quy | Chuyên đề học tập Tin học 11 (Định hướng khoa học máy tính) | Chuyên Đề 1: Thực Hành Thiết Kế Thuật Toán Theo Kĩ Thuật Đệ Quy - Lớp 11 - Kết Nối Tri Thức Với Cuộc Sống

Chuyên đề học tập Tin học 11 - Bài 3: Thực Hành Giải Toán Theo Kĩ Thuật Đệ Quy - Thực hành viết chương trình đệ quy giải bài toán chuyển đổi số nhị phân sang thập phân và tìm ước chung lớn nhất (ƯCLN) của hai số nguyên.

Nội Dung Chính

  1. NHIỆM VỤ 1
  2. NHIỆM VỤ 2

(Trang 16)

Sau bài này em sẽ:

  • Viết được một vài chương trình có sử dụng kĩ thuật đệ quy cho một số bài toán đơn giản.

hinh-anh-bai-3-thuc-hanh-giai-toan-theo-ki-thuat-de-quy-13819-0

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ì?

hinh-anh-bai-3-thuc-hanh-giai-toan-theo-ki-thuat-de-quy-13819-1

NHIỆM VỤ 1

Bài toán biến đổi số nhị phân sang số thập phân

Đầ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 có độ dài n:

S = s0 s1 ... sn-1.

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:

s[0], s[1], ..., s[n - 1].           (1)

Chúng ta sẽ thiết kế hàm dec(s, n) để tính giá trị số thập phân của biểu diễn nhị phân theo dãy (1).

Với n = 1 thì s chỉ là một kí tự, do đó hàm dec(s, 1) sẽ chính là int(s[0]).

Với n > 1 là trường hợp tổng quát của bài toán. Chúng ta đã biết nếu số M được biểu diễn bằng số nhị phân dạng a₀a₁...aₙ-₁ thì ta phải có công thức sau:

M = a₀2ⁿ⁻¹ + a₁2ⁿ⁻² + ... + aₙ-₂2¹ + aₙ-₁

Biến đổi công thức trên, chúng ta có:

M = 2(a02n-2 + a12n-3 + ... + an-321+an-2) + an-1.             (2)

Rõ ràng biểu thức trong ngoặc trên chính là biểu diễn thập phân của số nhị phân a₀, a₁, ..., aₙ-₂.

Vậy 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:

dec(s, n) = 2dec(s, n - 1) + int(s[n - 1]).               (3)

Áp dụng công thức (3) vào bài toán của chúng ta, chú ý rằng đầu vào của s là xâu nhị phân nên các phần tử s[k] đều là chữ số. Hàm đệ quy dec(s,n) được thiết kế như sau:

(Trang 17)

1          def dec(s, n):

2                     if n == 1:

3                          return int(s)

4                      else:

5                          return 2 * dec(s, n - 1) + int(s[n - 1])

Lưu ý: Công thức tại dòng 5 ở trên chính là công thức (3). Lệnh gọi hàm đệ quy như sau:

dec(s, len(s))

NHIỆM VỤ 2

Tìm UCLN của hai số nguyên không âm

Cho 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à UCLN (a, b) hay gcd(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:

1. Cách tính tự nhiên

Có rất nhiều cách tìm ƯCLN của hai số a, b cho trước. Cách tìm đơn giản như sau: 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 cho 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. Ví dụ cần tính gcd(12, 9), chúng ta thực hiện theo các bước sau:

1. gcd(12, 9) = gcd(3, 9).

2. gcd(3, 9) = gcd(3, 6).

3. gcd(3, 6) = gcd(3, 3).

4. gcd(3, 3) = 3.

Việc thiết lập chương trình tính gcd(a, b) theo cách trên (theo cả hai phương án đệ quy và không đệ quy) sẽ được cho trong phần vận dụng.

2. Cách tính nhanh theo thuật toán Euclid

Chúng ta sẽ tìm hiểu một cách tính khác cho bài toán trên. Cách tính này do nhà toán học Euclid đưa ra vào năm 300 trước công nguyên và là một trong những thuật toán nổi tiếng nhất. Để tìm hiểu thuật toán Euclid tính ƯCLN, chúng ta quan sát quy trình tính toán hàm gcd() theo bảng 3.1 dựa vào ví dụ tính gcd(12, 9).

Bảng 3.1. Quy trình tính toán gcd()

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 

Kết quả thu được gcd(12, 9) = 3.

Dễ thấy thuật toán Euclid sẽ nhanh hơn thuật toán tự nhiên đã mô tả ở trên.

(Trang 18)

Thuật toán tìm ƯCLN có thể mô tả theo hai quy luật sau:

1. Nếu b = 0 thì gcd(a, 0) = a.

2. Nếu b > 0 thì gcd(a, b) = gcd(b, a mod b).

Từ các phân tích trên chúng ta thiết lập chương trình đệ quy tính gcd(a, b) theo thuật toán Euclid như sau:

1     def gcd(a, b):

2           if b == 0:

3              return a

4            else:

5              return gcd(b, a % b)

hinh-anh-bai-3-thuc-hanh-giai-toan-theo-ki-thuat-de-quy-13819-2

LUYỆN TẬP

1. Mô tả các bước tính gcd(93, 60).

2. Viết chương trình chuyển đổi số nhị phân sang hệ 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.

hinh-anh-bai-3-thuc-hanh-giai-toan-theo-ki-thuat-de-quy-13819-3

VẬN DỤNG

1. Bài toán tính UCLN 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.

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 đệ quy.

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 cho Ban Giám hiệu tên và chiều cao của bạn thấp nhất và kết quả lại một 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 ketqua.out

Nguyễn Việt Hà 1.75

Bùi Quang Mơ 1.66

Trương Thị Lộc 1.50

Trần Văn Hoá 1.78

Trương Thị Lộc 1.50

Trần Văn Hoá 1.78

 

Tin tức mới


Đánh giá

Bài 3: Thực Hành Giải Toán Theo Kĩ Thuật Đệ Quy | Chuyên đề học tập Tin học 11 (Định hướng khoa học máy tính) | Chuyên Đề 1: Thực Hành Thiết Kế Thuật Toán Theo Kĩ Thuật Đệ Quy - Lớp 11 - Kết Nối Tri Thức Với Cuộc Sống

Tổng số sao của bài viết là: 5 trong 1 đánh giá
Xếp hạng: 5 / 5 sao

Bình Luận

Để Lại Bình Luận Của Bạn

Tin tức mới

Môn Học Lớp 11 - Kết Nối Tri Thức Với Cuộc Sống

Chuyên đề học tập Mĩ thuật 11

Chuyên đề học tập Toán 11

Chuyên đề học tập Ngữ văn 11

Chuyên đề học tập Vật lí 11

Chuyên đề học tập Hóa học 11

Chuyên đề học tập Sinh học 11

Chuyên đề học tập Giáo dục Kinh tế và Pháp luật 11

Chuyên đề học tập Lịch Sử 11

Chuyên đề học tập Địa lí 11

Chuyên đề học tập Âm nhạc 11

Toán tập 1

Chuyên đề học tập Công nghệ 11 (Công nghệ Cơ khí)

Chuyên đề học tập Công nghệ 11 (Công nghệ chăn nuôi)

Chuyên đề học tập Tin học 11 (Định hướng tin học ứng dụng)

Chuyên đề học tập Tin học 11 (Định hướng khoa học máy tính)

Toán tập 2

Vật lí

Hoá Học

Sinh Học

Ngữ Văn Tập 1

Ngữ Văn Tập 2

Lịch sử

Địa Lý

Công Nghệ

Công Nghệ Công Nghệ Cơ Khí

Giáo Dục Quốc Phòng Và An Ninh 11

Giáo dục Kinh Tế và Pháp Luật

GDTC_Cầu Lông

Giáo dục Thể Chất Bóng Chuyền

GDTC Bóng Đá

Âm Nhạc

Hoạt động trải nghiệm hướng nghiệp

GDTC_Bóng Rổ

Mỹ Thuật Điêu Khắc

Mỹ Thuật Đồ Hoạ_Tranh in

Mỹ Thuật Hội Hoạ

Mỹ Thuật Kiến Trúc

Mỹ Thuật Thiết Kế Công Nghiệp

Tin Học

Mỹ Thuật Thiết Kế Đa Phương Tiện

Tin học 11 - Định hướng khoa học máy tính

Mỹ Thuật Thiết Kế Đồ Hoạ

Mỹ Thuật Thiết Kế Sân Khấu Điện Ảnh

Mỹ Thuật Thiết Kế Thời Trang

Mỹ Thuật_Lý Luận Và Lịch Sử Mỹ Thuật

Giải bài tập Toán 11 Tập 1

Giải bài tập Toán 11 Tập 2

Giải bài tập Vật lý 11

Giải bài tập Hóa học 11

Giải bài tập Sinh học 11

Bộ Sách Lớp 11

Giáo Dục Việt Nam

Bộ Sách Giáo Khoa của Nhà Xuất Bản Giáo Dục Việt Nam

Tài liệu học tập

Đây là tài liệu tham khảo hỗ trợ trong quá trình học tập

Global Success & Bộ Giáo Dục - Đào Tạo

Bộ sách Global Success & Bộ Giáo Dục - Đào Tạo là sự kết hợp giữa ngôn ngữ Tiếng Anh theo lối giảng dạy truyền thống và cập nhật những phương thức quốc tế

Cánh Diều

Bộ sách giáo khoa của Nhà xuất bản Cánh Diều

Kết Nối Tri Thức Với Cuộc Sống

Sách giáo khoa của nhà xuất bản Kết Nối Tri Thức Với Cuộc Sống

Sách Kết Nối Tri Thức Với Cuộc Sống

Lớp 1

Sách giáo khoa dành cho lớp 1

Lớp 6

Sách giáo khoa dành cho lớp 6

Lớp 5

Sách giáo khoa dành cho lớp 5

Lớp 4

Sách giáo khoa dành cho lớp 4

Lớp 2

Sách giáo khoa dành cho lớp 2

Lớp 3

Sách giáo khoa dành cho lớp 3

Lớp 7

Sách giáo khoa dành cho lớp 7

Lớp 8

Sách giáo khoa dành cho lớp 8

Lớp 9

Sách giáo khoa dành cho lớp 9

Lớp 10

Sách giáo khoa dành cho lớp 10

Lớp 11

Sách giáo khoa dành cho lớp 11

Lớp 12

Sách giáo khoa dành cho lớp 12

Liên Kết Chia Sẻ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.