Đề Xuất 2/2023 # Luyện Tập Đệ Quy (Phần 1) # Top 8 Like | Asianhubjobs.com

Đề Xuất 2/2023 # Luyện Tập Đệ Quy (Phần 1) # Top 8 Like

Cập nhật nội dung chi tiết về Luyện Tập Đệ Quy (Phần 1) mới nhất trên website Asianhubjobs.com. Hy vọng thông tin trong bài viết sẽ đáp ứng được nhu cầu ngoài mong đợi của bạn, chúng tôi sẽ làm việc thường xuyên để cập nhật nội dung mới nhằm giúp bạn nhận được thông tin nhanh chóng và chính xác nhất.

Như đã nói ở bài trước thì trong kỹ thuật đệ quy, phần khó nhất là tìm ra công thức truy hồi hay tổng quát hoá vấn đề. Muốn dùng kỹ thuật đệ quy, phải tư duy theo kiểu đệ quy. Mong loạt bài luyện tập đệ quy có thể giúp bạn có cái nhìn tổng quát về hướng tiếp cận với một bài toán theo kiểu đệ quy.

Khi giải một bài toán bằng đệ quy, thông thường mình sẽ thử viết ra kết quả đối với những trường hợp đơn giản, sau đó cố gắng rút ra công thức tổng quát. Sẽ không có một phương pháp chung để có thể học tốt đệ quy, vì nó còn dựa vào yếu tố kinh nghiệm, làm nhiều bạn sẽ quen với tư duy kiểu đệ quy.

Bài 1: Tính S = 1 + 2 + 3 + … + n

Dễ dàng tìm được công thức tổng quát cho bài này là:

S(0) = 0

S(n) = S(n-1) + n

Bài 2: Tính xn

Công thức này học sinh lớp 7 nào cũng phải biết

x0 = 1

xn = x * xn-1

Bài 3: Tìm UCLN(a, b)

Ta có thể dùng công thức Euclid như sau:

UCLN(a, b) = b nếu a chia hết cho b.

Ngược lại: UCLN(a, b) = UCLN(b, a mod b)

Với công thức này thì điểm dừng của đệ quy là trường hợp a chia hết cho b.

3 bài trên quá dễ vì đã có sẵn công thức truy hồi.

Bài 4: Tính (n dấu căn)

Ta tính thử một vài trường hợp đơn giản và cố gắng suy ra liên hệ đối với trường hợp trước đó.

n = 1 (1 dấu căn):

n = 2 (2 dấu căn):

n = 3 (3 dấu căn): 

Và điểm dừng của công thức này S(1) = 1.

Bài 5: Đếm số lượng chữ số của một số nguyên n.

Trước khi chưa biết đệ quy, ta thường làm cách dùng vòng lặp, dùng một biến đếm lưu kết quả, mỗi lần lặp tăng biến đếm lên và chia n cho 10, lặp cho đến khi n bằng 0. Nếu tư duy theo kiểu đệ quy sẽ đơn giản hơn rất nhiều.

Giả sử có số nguyên dương , ta đếm số lượng chữ số bằng cách: đếm số lượng của số nguyên rồi cộng thêm 1 (ứng với chữ số ). Và trường hợp cơ bản là nếu n < 10 thì có 1 chữ số.

int DemSoLuongChuSo(int n) { if (n < 10) return 1; else return DemSoLuongChuSo(n / 10) + 1; }

Vậy số nguyên âm thì sao ? Đơn giản ta chỉ cần đếm số đối của nó, hàm được cài đặt hoàn thiện như sau

int DemSoLuongChuSo(int n) { if (n < 0) return DemSoLuongChuSo(-n); else if (n < 10) return 1; else return DemSoLuongChuSo(n / 10) + 1; }

Chia sẻ:

Tweet

Like this:

Số lượt thích

Đang tải…

Phân Tích Các Chương Trình Đệ Quy

Phương trình đệ quy là một phương trình biểu diễn mối liên hệ giữa T(n) và T(k), trong đó T(n) là thời gian thực hiện chương trình với kích thước dữ liệu nhập là n, T(k) thời gian thực hiện chương trình với kích thước dữ liệu nhập là k, với k < n. Ðể thành lập được phương trình đệ quy, ta phải căn cứ vào chương trình đệ quy.

Thông thường một chương trình đệ quy để giải bài toán kích thước n, phải có ít nhất một trường hợp dừng ứng với một n cụ thể và lời gọi đệ quy để giải bài toán kích thước k (k<n).

Để thành lập phương trình đệ quy, ta gọi T(n) là thời gian để giải bài toán kích thước n, ta có T(k) là thời gian để giải bài toán kích thước k. Khi đệ quy dừng, ta phải xem xét khi đó chương trình làm gì và tốn hết bao nhiêu thời gian, chẳng hạn thời gian này là c(n). Khi đệ quy chưa dừng thì phải xét xem có bao nhiêu lời gọi đệ quy với kích thước k ta sẽ có bấy nhiêu T(k). Ngoài ra ta còn phải xem xét đến thời gian để phân chia bài toán và tổng hợp các lời giải, chẳng hạn thời gian này là d(n).

Dạng tổng quát của một phương trình đệ quy sẽ là:

Trong đó C(n) là thời gian thực hiện chương trình ứng với trường hợp đệ quy dừng. F(T(k)) là một đa thức của các T(k). d(n) là thời gian để phân chia bài toán và tổng hợp các kết quả.

Ví dụ 1-10: Xét hàm tính giai thừa viết bằng giải thuật đệ quy như sau:

FUNCTION Giai_thua(n:Integer): Integer;

BEGIN

IF n=0 then Giai_thua :=1

ELSE Giai_thua := n* Giai_thua(n-1);

END;

Ðây là phương trình đệ quy để tính thời gian thực hiện của chương trình đệ quy Giai_thua.

Ví du 1-11: Chúng ta xét thủ tục MergeSort một cách phác thảo như sau:

FUNCTION MergeSort (L:List; n:Integer):List;

VAR L1,L2:List;

BEGIN

IF n=1 THEN RETURN(L)

ELSE BEGIN

Chia đôi L thành L1 và L2, với độ dài n/2;

RETURN(Merge(MergeSort(L1,n/2),MergeSort(L2,n/2)));

END;

END;

Hàm MergeSort nhận một danh sách có độ dài n và trả về một danh sách đã được sắp xếp. Thủ tục Merge nhận hai danh sách đã được sắp L1 và L2 mỗi danh sách có độ dài , trộn chúng lại với nhau để được một danh sách gồm n phần tử có thứ tự. Giải thuật chi tiết của Merge ta sẽ bàn sau, chúng ta chỉ để ý rằng thời gian để Merge các danh sách có độ dài là O(n).

Gọi T(n) là thời gian thực hiện MergeSort một danh sách n phần tử thì T( ) là thời gian thực hiện MergeSort một danh sách phần tử.

Có ba phương pháp giải phương trình đệ quy:

1.- Phương pháp truy hồi

2.- Phương pháp đoán nghiệm.

3.- Lời giải tổng quát của một lớp các phương trình đệ quy.

Phương pháp truy hồi

Ta có T(n) = T(n-1) + C 2

……

Quá trình trên kết thúc khi n – i = 0 hay i = n. Khi đó ta có

Ví dụ 1-13: Giải phương trình T(n) =

……….

Quá trình suy rộng sẽ kết thúc khi = 1 hay 2 i = n và do đó i = logn. Khi đó ta có:

Phương pháp đoán nghiệm

Ta đoán một nghiệm f(n) và dùng chứng minh quy nạp để chứng tỏ rằng T(n) ≤ f(n) với mọi n.

Thông thường f(n) là một trong các hàm quen thuộc như logn, n, nlogn, , , , n!,.

Ðôi khi chúng ta chỉ đoán dạng của f(n) trong đó có một vài tham số chưa xác định (chẳng hạn f(n) = an 2 với a chưa xác định) và trong quá trình chứng minh quy nạp ta sẽ suy diễn ra giá trị thích hợp của các tham số.

Ví dụ 1-12: Giải phương trình đệ quy T(n) =

Giả sử chúng ta đoán f(n) = anlogn. Với n = 1 ta thấy rằng cách đoán như vậy không được bởi vì anlogn có giá trị 0 không phụ thuộc vào giá trị của a. Vì thế ta thử tiếp theo f(n) = anlogn + b.

Với n = 1 ta có, T(1) = C 1 và f(1) = b, muốn T(1) ≤ f(1) thì b ≥ C 1 (*)

Giả sử rằng T(k) ≤ f(k), tức là T(k) ≤ aklogk + b với mọi k < n (giả thiết quy nạp). Ta phải chứng minh T(n) ≤ anlogn + b với mọi n.

Giả sử n ≥ 2, từ phương trình đã cho ta có T(n) = 2T( ) + C 2 n

T(n) ≤ (anlogn – an + 2b) + C 2 n

T(n) ≤ (anlogn + b) + [b + (C 2 – a)n] . Nếu lấy a ≥ C 2 + b (**) ta được

T(n) ≤ (anlogn + b) + (1-n) b

Nếu ta lấy a và b sao cho cả (*) và (**) đều thoả mãn thì T(n) ≤ an logn + b với mọi n.

Ta phải giải hệ Ðể đơn giản, ta giải hệ

Hay nói cách khác T(n) là O(nlogn).

Lời giải tổng quát cho một lớp các phương trình đệ quy

Khi thiết kế các giải thuật, người ta thường vận dụng phương pháp chia để trị mà ta sẽ bàn chi tiết hơn trong chương 3. Ở đây chi trình bày tóm tắt phương pháp như sau:

Giả thiết rằng mỗi bài toán con kích thước 1 lấy một đơn vị thời gian và thời gian để chia bài toán kích thước n thành các bài toán con kích thước và tổng hợp kết quả từ các bài toán con để được lời giải của bài toán ban đầu là d(n). (Chẳng hạn đối với ví dụ MergeSort, chúng ta có a = b = 2, và d(n) = C 2n. Xem C 1 là một đơn vị).

Tất cả các giải thuật đệ quy như trên đều có thể thành lập một phương trinh đệ quy tổng quát, chung cho lớp các bài toán ấy.

Nếu gọi T(n) là thời gian để giải bài toán kích thước n thì T( ) là thời gian để giải bài toán con kích thước . Khi n = 1 theo giả thiết trên thì thời gian giải bài toán kích thước 1 là 1 đơn vị, tức là T(1) = 1. Khi n lớn hơn 1, ta phải giải đệ quy a bài toán con kích thước , mỗi bài toán con tốn T( ) nên thời gian cho a lời giải đệ quy này là aT( ). Ngoài ra ta còn phải tốn thời gian để phân chia bài toán và tổng hợp các kết quả, thời gian này theo giả thiết trên là d(n).

Vậy ta có phương trình đệ quy:

Giả sử n = b k, quá trình suy rộng trên sẽ kết thúc khi i = k.

Xét ba trường hợp sau:

T(1) = 1

T(n) = 2T() + nlogn

Trong chương này, chúng ta cần phải nắm vững các ý sau:

1.- Sự phân tích, đánh giá giải thuật là cần thiết để lựa chọn giải thuật tốt, hoặc để cải tiến giải thuật.

2.- Sử dụng khái niệm độ phức tạp và ký hiệu ô lớn để đánh giá giải thuật.

3.- Đối với các chương trình không gọi chương trình con, thì dùng quy tắc cộng, quy tắc nhân và quy tắc chung để phân tích, tính độ phức tạp.

4.- Đối với các chương trình gọi chương trình con, thì tính độ phức tạp theo nguyên tắc “từ trong ra”.

5.- Đối với các chương trình đệ quy thì trước hết phải thành lập phương trình đệ quy, sau đó giải phương trình đệ quy, nghiệm của phương trình đệ quy chính là độ phức tạp của giải thuật.

6.- Khi giải một phương trình đệ quy không thuộc dạng phương trình tổng quát thì sử dụng phương pháp truy hồi hoặc phương pháp đoán nghiệm.

7.- Khi giải một phương trình đệ quy thuộc dạng phương trình tổng quát, nếu hàm tiến triển d(n) là một hàm nhân thì vận dụng công thức nghiệm của môt trong ba trường hợp để xác định nghiệm, còn nếu d(n) không phải là hàm nhân thì phải tính trực tiếp nghiệm riêng và so sánh với nghiệm thuần nhất để chọn nghiệm.

Bài 1: Tính thời gian thực hiện của các đoạn chương trình sau:

a) Tính tổng của các số

{1} Sum := 0;

{2} for i:=1 to n do begin

{3} readln(x);

{4} Sum := Sum + x;

end;

b) Tính tích hai ma trận vuông cấp n C = A*B:

{1} for i := 1 to n do

{2} for j := 1 to n do begin

{3} c[i,j] := 0;

{4} for k := 1 to n do

{5} c[i,j] := c[i,j] + a[i,k] * b[k,j];

end;

Bài 2: Giải các phương trình đệ quy sau với T(1) = 1 và

Bài 3: Giải các phương trình đệ quy sau với T(1) = 1 và

Bài 4: Giải các phương trình đệ quy sau với T(1) = 1 và

Bài 5: Giải các phương trình đệ quy sau bằng phương pháp đoán nghiệm:

Bài 6: Cho một mảng n số nguyên được sắp thứ tự tăng. Viết hàm tìm một số nguyên trong mảng đó theo phương pháp tìm kiếm nhị phân, nếu tìm thấy thì trả về TRUE, ngược lại trả về FALSE.

Sử dụng hai kĩ thuật là đệ quy và vòng lặp. Với mỗi kĩ thuật hãy viết một hàm tìm và tính thời gian thực hiện của hàm đó.

Bài 7: Tính thời gian thực hiện của giải thuật đệ quy giải bài toán Tháp Hà nội với n tầng?

Bài 8: Xét công thức truy toán để tính số tổ hợp chập k của n như sau:

Viết một hàm đệ quy để tính số tổ hợp chập k của n.

Tính thời gian thực hiện của giải thuật nói trên.

Giải Bài Tập Trang 87, 88 Sgk Toán 6 Tập 1: Luyện Tập Quy Tắc Chuyển Vế

Giải bài tập trang 87, 88 SGK Toán 6 tập 1: Luyện tập quy tắc chuyển vế

Giải bài tập môn Toán lớp 6

Giải bài tập SGK Toán 6 bài Luyện tập quy tắc chuyển vế

Giải bài tập trang 87, 88 SGK Toán 6 tập 1: Luyện tập quy tắc chuyển vế với lời giải chi tiết, rõ ràng theo khung chương trình sách giáo khoa Toán lớp 6. Lời giải hay bài tập Toán 6 này gồm các bài giải tương ứng với từng bài học trong sách giúp cho các em học sinh ôn tập và củng cố các dạng bài tập, rèn luyện kỹ năng giải Toán.

Giải bài tập trang 82, 83 SGK Toán lớp 6 tập 1: Phép trừ hai số nguyên

Giải bài tập trang 85 SGK Toán lớp 6 tập 1: Quy tắc dấu ngoặc

Bài 1 trang 87 SGK Toán 6 tập 1 – Phần số học

Tìm số nguyên x, biết: 4 – (27 – 3) = x – (13 – 4)

Đáp án và hướng dẫn giải:

Áp dụng quy tắc chuyển vế 4 – (27 – 3) = x – (13 – 4), ta suy ra:

4 – (27 – 3) + (13 – 4) = x hay x = 4 – 24 + 9. Vậy x = -11.

Bài 2 trang 87 SGK Toán 6 tập 1 – Phần số học

Tính:

a) (-37) + (-112); b) (-42) + 52; c) 13 – 31;

d) 14 – 24 – 12; e) (-25) + 30 – 15.

Đáp án:

a) -149; b) 10; c) -18;

d) -22; e) -10.

Bài 3 trang 87 SGK Toán 6 tập 1 – Phần số học

Một đội bóng đá năm ngoái ghi được 27 bàn và để thủng lưới 48 bàn. Năm nay đội ghi được 39 bàn và để thủng lưới 24 bàn. Tính hiệu số bàn thắng – thua của đội đó trong mỗi mua giải.

Đáp án:

Hiệu số bàn thẳng thua năm ngoái là: 27 – 48 = -21.

Hiệu số bàn thắng thua năm nay là: 39 – 24 = 15.

Đáp án:

Bài 5 trang 88 SGK Toán 6 tập 1 – Phần số học

Tính các tổng sau một cách hợp lí:

a) 3784 + 23 – 3785 + 15;

b) 21 + 22 + 23 + 24 – 11 – 12 – 13 – 14.

Đáp án và hướng dẫn giải:

a) Áp dụng tính chất giao hoán, để -3785 đứng liền 3784.

b) Tương tự, áp dụng các tính chất giao hoán và kết hợp để có: (21 – 11) + (22 – 12) + (23 – 13) + (24 – 14).

a)= (3784 – 3785) + (23 – 15)

= -1 + 8 = 7.

b) = (21 – 11) + (22 – 12) + (23 – 13) + (24 – 14).

= 10 + 10 + 10 + 10 = 40.

Bài 6 trang 88 SGK Toán 6 tập 1 – Phần số học

Tính nhanh:

a) -2001 + (1999 + 2001);

b) (43 – 863) – (137 – 57).

Đáp án và hướng dẫn giải:

a) Bỏ dấu ngoặc rồi đổi chỗ để số hạng 2001 đứng liền -2001.

b) Thực hiện các phép tính trong ngoặc trước.

a) 1999; b) -900a. 2001 + 1999 + 2001

= (-2001 + 2001) + 1999 = 1999.

b) = 43 – 863 – 137 + 57.

= (43 + 57) – (863 + 137)

= 100 – 1000 = -900.

Bài 7 trang 88 SGK Toán 6 tập 1 – Phần số học

Đố: Cho chín tấm bìa có ghi số và chia thành ba nhóm như hình 51. Hãy chuyển một tấm, bìa từ nhóm này sang nhóm khác sao cho tổng các số trong mỗi nhóm đều bằng nhau?

Đáp án và hướng dẫn giải:

Trước hết hãy tính tổng trong mỗi nhóm. Vì chỉ được chuyển một tấm bìa nên hiển nhiên phải chuyển một tấm bìa ghi số dương từ tổng lớn nhất sang tổng bé nhất hoặc một tấm bìa ghi số âm từ tổng bé nhất sang tổng lớn nhất.

Vậy phải chuyển 6 từ nhóm II sang nhóm I.

Bài tiếp theo: Giải bài tập trang 89 SGK Toán lớp 6 tập 1: Nhân hai số nguyên khác dấu sẽ giúp các bạn học tốt môn Toán lớp 6 hơn. Mời các bạn tham khảo.

Bài 1 Quy Tắc Đếm

Bài tập minh họa

Bạn cần mua một áo sơ mi cỡ 30 hoặc 32. Áo cỡ 30 có 3 màu khác nhau, áo cỡ 32 có 4 màu khác nhau. Hỏi bạn có bao nhiêu cách lựa chọn ?

Hướng dẫn giải:

Công việc ta cần thực hiện trong bài toán này là mua một chiếc ao sơ mi cỡ 30 hoặc 32. Để thực hiện công việc này ta có hai phương án.

Phương án 1: Mua áo cỡ 30: Phương án này ta có 3 cách chọn (chọn một trong ba màu).

: Mua áo cỡ 32: Phương án này ta có 4 cách chọn.

Vậy ta có cả thảy (3 + 4 = 7) cách lựa chọn.

Có 10 cuốn sách Toán khác nhau, 11 cuốn sách Văn khác nhau và 7 cuốn sách anh văn khác nhau. Một học sinh được chọn một quyển sách trong các quyển sách trên. Hỏi có bao nhiêu cách lựa chọn.

Hướng dẫn giải:

Để chọn một cuốn sách trong những cuốn sách trên ta có các phương án sau.

Phương án 1: Cuốn sách chọn là cuốn sách Toán: Ta có 10 cách chọn

Phương án 2: Cuốn sách chọn là cuốn sách Văn: Ta có 11 cách chọn

Phương án 3: Cuốn sách chọn là cuốn sách anh văn: Ta có 7 cách chọn

Vậy có (10 + 11 + 7 = 28) cách lựa chọn.

Có bao nhiêu cách xếp 4 người A,B,C,D lên 3 toa tàu, biết mỗi toa có thể chứa 4 người.

Hướng dẫn giải:

Để xếp A ta có 3 cách lên một trong ba toa.

Với mỗi cách xếp A ta có 3 cách xếp B lên toa tàu.

Với mỗi cách xếp A, B ta có 3 cách xếp C lên toa tàu.

Với mỗi cách xếp A, B, C ta có 3 cách xếp D lên toa tàu.

Vậy có (3.3.3.3 = 81) cách xếp 4 người lên toa tàu.

Cho các chữ số 1, 2, 3,…, 9. Từ các số đó có thể lập được bao nhiêu số

a) Có 4 chữ số đôi một khác nhau.

b) Số chẵn gồm 4 chữ số khác nhau và không vượt quá 2011.

Hướng dẫn giải:

Gọi số cần lập (x = overline {abcd} ), (a,b,c,d in left{ {1,2,3,4,5,6,7,8,9} right})

a) Có (9.8.7.6 = 3024) số

b) Vì (x) chẵn nên (d in left{ {2,4,6,8} right}). Đồng thời (x le 2011 Rightarrow a = 1)

(a = 1 Rightarrow a) có 1 cách chọn, khi đó (d) có 4 cách chọn; (b,c) có (7.6) cách

Suy ra có: (1.4.6.7 = 168) số

Từ các số (1,2,3,4,5,6,7) lập được bao nhiêu số tự nhiên gồm 4 chữ số khác nhau và chia hết cho 5.

Hướng dẫn giải:

Gọi số cần lập (x = overline {abcd} ); (a,b,c,d in left{ {1,2,3,4,5,6,7} right}) và (a,b,c,d) đôi một khác nhau.

Vì (x) chia hết cho 5 nên (d) chỉ có thể là 5 ( Rightarrow ) có 1 cách chọn d.

Có 6 cách chọn a, 5 cách chọn b và 4 cách chọn c.

Vậy có (1.6.5.4 = 120) số thỏa yêu cầu bài toán.

Bạn đang đọc nội dung bài viết Luyện Tập Đệ Quy (Phần 1) trên website Asianhubjobs.com. Hy vọng một phần nào đó những thông tin mà chúng tôi đã cung cấp là rất hữu ích với bạn. Nếu nội dung bài viết hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!