TopStudy

Tin học · Lớp 11

Giải SGK Chuyên đề Tin học 11 Bài 2. Thiết kế thuật toán đệ quy

12 câu · 18 phút · Ngân hàng đề TopStudy. Đáp án và lời giải do TopStudy biên soạn, mở ngay dưới từng câu.

Làm bài

Nội dung đề

Phần I. Tự luận

Câu 1

1 điểm

An được giao tìm một thiết kế mới cho bài toán tính tổng S(n) có thể được viết lại như sau: S(n)=1+2+3+...+n=1+2+...+n−1+n=S(n−1)+nS(n)=1+2+3+...+n=1+2+...+n-1+n=S(n-1)+n . Do đó, việc tính S(n) có thể được tính từ S(n-1), tương tự S(n-1) lại có thể được tính từ S(n-2). Cứ như vậy, cuối cùng sẽ dẫn đến cần tính S(0), nhưng S(0)=0. Em có thể giúp n hoàn thiện ý tưởng trên thành một chương trình hay không?

Hình minh hoạ

Xem đáp án và lời giải

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Bước 1. Bài toán yêu cầu tính tổng của n số nguyên từ 1 đến n. Cần thiết lập hàm S(n) trả về giá trị tổng cần tim.
Bước 2. Điều kiện n ≥ 0.
Với n = 0 ta có S(n) = 0. Đây là phần cơ sở cho điều kiện
dừng của lời gọi đệ quy của hàm S(n).
Bước 3. Dễ thấy S(n) = n + S(n - 1) là công thức truy hồi của hàm S(n) và là cơ sở của lời gọi đệ quy của hàm. Chương trình như sau:

Hình minh hoạ

Câu 2

1 điểm

Trao đổi, thảo luận và tìm hiểu ý tưởng thực hiện các tính toán sau bằng kĩ thuật đệ quy.

1. Tính tổng S(n)=1+2+3+...+nS(n)=1+2+3+...+n

2. Tính lũy thừa an=a×a×...×a (n lan){a}^{n}=a\times a\times ...\times a\ (n\ lan)

3. Tính n giai thừa n!=1×2×3×...×nn!=1\times 2\times 3\times ...\times n

Xem đáp án và lời giải

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

1. Tính tổng S(n)=1+2+3+...+nS(n)=1+2+3+...+n

Bước 1. Bài toán yêu cầu tính tổng của n số nguyên từ 1 đến n. Cần thiết lập hàm S(n) trả về giá trị tổng cần tim.
Bước 2. Điều kiện n ≥ 0.
Với n = 0 ta có S(n) = 0. Đây là phần cơ sở cho điều kiện
dừng của lời gọi đệ quy của hàm S(n).
Bước 3. Dễ thấy S(n) = n + S(n - 1) là công thức truy hồi của hàm S(n) và là cơ sở của lời gọi đệ quy của hàm.Chương trình như sau:

2. Tính lũy thừa an=a×a×...×a (n lan){a}^{n}=a\times a\times ...\times a\ (n\ lan)

Bước 1. Bài toán yêu cầu tính luỹ thừa an{a}^{n}. Cần thiết lập hàm exp(a,n) trả về giá trị an{a}^{n}.
Bước 2. Điều kiện là n ≥ 0 và theo quy ước thì exp(a,0) = 1 với mọi a. Đây chính là phần cơ sở cho điều kiện dừng của lời gọi đệ quy của hàm exp(a,n).
Bước 3. Ta có an=a ⋅ an−1{a}^{n}=a\ \cdot \ {a}^{n-1} suy ra exp(a,n) = a × exp(a,n-1), đây là công thức truy hồi tính exp(a,n). Từ đó có thể thiết lập lời gọi đệ quy của hàm này.

3. Tính n giai thừa n!=1×2×3×...×nn!=1\times 2\times 3\times ...\times n

Bước 1. Bài toán yêu cầu tính n giai thừa n!. Ta cần thiết lập hàm giaithua(n) trả về giá trị n!.
Bước 2. Điều kiện là n ≥ 0 và quy ước 0! = 1, tức là giaithua (0) = 1. Đây là cơ sở cho điều kiện dừng của lời gọi đệ quy của hàm giaithua(n).
Bước 3. Ta có công thức giaithua(n) = n × giaithua(n-1), đây là công thức truy hồi tính giaithua(n). Từ đó dễ dàng thiết lập lời gọi đệ quy cho hàm này.

Câu 3

1 điểm
Hãy chỉ ra phần cơ sở và phần đệ quy của các chương trình trên.
Xem đáp án và lời giải

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

1. Tính tổng S(n)=1+2+3+...+nS(n)=1+2+3+...+n

Phần cơ sở: S(0) = 0

Phần đệ quy: S(n) = n + S(n - 1)

2. Tính lũy thừa an=a×a×...×a (n lan){a}^{n}=a\times a\times ...\times a\ (n\ lan)

Phần cơ sở: a0=1{a}^{0}=1

Phần đệ quy: an=a ⋅ an−1{a}^{n}=a\ \cdot \ {a}^{n-1}

3. Tính n giai thừa n!=1×2×3×...×nn!=1\times 2\times 3\times ...\times n

Phần cơ sở: 0! = 1

Phần đệ quy: n!=n × (n-1)

Câu 4

1 điểm
Vì sao trong ý tưởng thiết kế đệ quy trên, yêu cầu từ bài toán với kích thước lớn cần phải đưa về cùng bài toán đó với kích thước nhỏ hơn?
Xem đáp án và lời giải

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

Trong ý tưởng thiết kế đệ quy, yêu cầu đưa bài toán với kích thước lớn về cùng bài toán đó với kích thước nhỏ hơn bởi vì các bài toán lớn có thể được phân chia thành các bài toán con nhỏ hơn và tương tự như vậy cho đến khi đạt được bài toán nhỏ nhất mà ta có thể giải quyết trực tiếp. Khi đó, ta sử dụng kết quả của các bài toán con này để giải quyết bài toán ban đầu lớn hơn. Nhờ vậy, lời giải ngắn gọn và dễ hiểu hơn.

Câu 5

1 điểm

Chúng ta đã biết thuật toán tìm kiếm nhị phân trên các dãy phần tử đã sắp xếp. Hãy tìm tới thiết kế mới của thuật toán này theo kĩ thuật đệ quy. Trao đổi, thảo luận và trả lời các câu hỏi sau:

1. Nêu ý tưởng chính của giải thuật tìm kiếm nhị phân sử dụng đệ quy

2. Vị trí nào trong thuật toán có thể gợi ý cho kĩ thuật đệ quy?

3. Phần cơ sở của thiết kế đệ quy nằm ở bước nào?

Xem đáp án và lời giải

Hướng dẫn chấm do TopStudy biên soạn, mang tính gợi ý

1. Ý tưởng chính của giải thuật tìm kiếm nhị phân sử dụng đệ quy là phân chia dãy phần tử đã sắp xếp thành hai nửa bằng nhau, tìm kiếm phần tử cần tìm trong nửa phù hợp và tiếp tục phân chia và tìm kiếm đệ quy cho đến khi tìm thấy phần tử hoặc không tìm thấy.

2. Vị trí trong thuật toán có thể gợi ý cho kĩ thuật đệ quy là phần phân chia dãy phần tử thành hai nửa bằng nhau, tìm kiếm trong nửa phù hợp và tiếp tục phân chia và tìm kiếm đệ quy cho đến khi tìm thấy phần tử hoặc không tìm thấy. Đây là một bài toán con nhỏ hơn của bài toán ban đầu và có thể được giải quyết bằng cùng một thuật toán đệ quy.

3. Phần cơ sở của thiết kế đệ quy nằm ở bước cuối cùng của thuật toán, khi không còn cách nào để phân chia dãy phần tử nữa và ta chỉ còn lại một phần tử hoặc không có phần tử nào để tìm kiếm. Khi đó, ta kết luận bài toán đệ quy đã được giải quyết và trả về kết quả.

Câu 6

1 điểm
Trong chương trình trên lệnh nào đóng vai trò là phần cơ sở của đệ quy?
Xem đáp án và lời giải

Câu 7

1 điểm
Giả sử A = [1, 3, 7, 9] và K = 10. Nếu áp dụng chương trình trên thì cần mấy lần gọi hàm đệ quy?
Xem đáp án và lời giải

Câu 8

1 điểm
Viết chương trình theo kĩ thuật đệ quy để tính hàm SL(n) là tổng các số tự nhiên lẻ nhỏ hơn hoặc bằng n
Xem đáp án và lời giải

Câu 9

1 điểm
Cho trước dãy A. Viết chương trình đệ quy để in dãy A theo thứ tự ngược lại.
Xem đáp án và lời giải

Câu 10

1 điểm

Viết chương trình tổng S=1!+2!+...+n!S=1!+2!+...+n! theo hai cách:

a) Không sử dụng đệ quy

b) Có sử dụng kĩ thuật đệ quy

Xem đáp án và lời giải

Câu 11

1 điểm

Chúng ta đã biết thuật toán sắp xếp chèn trên dãy A cho trước theo hàm sau

Hình minh hoạ

Hãy thiết kế lại chương trình trên sử dụng kĩ thuật đệ quy

Xem đáp án và lời giải

Câu 12

1 điểm

Bạn An đã nghĩ ra thuật toán tìm kiếm nhị phân bằng đệ quy theo cách khác như sau:

Hình minh hoạ

a) Chương trình của bạn An có đúng không?

b) Trong chương trình trên, phần cơ sở là những lệnh nào?

Xem đáp án và lời giải

Đề cùng chủ đề

Tất cả đề Chuyên đề 1. Thực hành thiết kế thuật toán theo kĩ thuật đệ quy · Các bộ sách Tin học Lớp 11