SlideShare una empresa de Scribd logo
1 de 42
GIẢI THUẬT ĐỆ QUY
2
Mục tiêu
Đến cuối chương, bạn có thể:
 Giải thích được giải thuật đệ quy là gì.
 Biết cách diễn đạt 1 tác vụ hướng đệ quy.
 Biết cách hiện thực hàm đệ quy
 Phân loại được các loại đệ quy
 Giải thích được cách chạy một hàm đệ quy.
 Biết cách khử một số giải thuật đệ quy.
3
1- Đệ quy là gì (Recursion)
 Định nghĩa tường minh: Giải thích khái niệm
mới bằng những khái niệm đã có.
 Người = Động vật cấp cao.
 Định nghĩa lòng vòng: Giải thích 1 khái niệm
bằng chính khái niệm đó.
 Đệ quy: Đưa ra 1 định nghĩa có sử dụng
chính khái niệm đang cần định nghĩa( quay
về ).
 Người = con của hai người khác.
4
Đệ quy là gì?...
 Con người hiểu được định nghĩa đệ quy vì
đệ quy có chặn (điều kiện biên, điều kiện suy
biến) – có thể là biên ngầm định.
 Người = con của hai người khác  Ngầm
hiểu là có 2 người đầu tiên.
 Thư mục = các thư mục con + các tập tin 
Ngầm hiểu: Hiển nhiên tồn tại thư mục gốc là
cả ổ đĩa.
5
2- Kiểu dữ liệu đệ quy
 Một người được mô tả bằng: tên, năm sinh, cha
(một người khác), mẹ (một người khác).
struct NGUOI
{ char Ten[51];
int namsinh;
NGUOI cha;
NGUOI me;
};
Cấu trúc này không
khả thi trong máy tính
vì không thể
cấp bộ nhớ
6
Kiểu dữ liệu đệ quy...
 Sửa lại:
struct NGUOI
{ char Ten[51];
int namsinh;
NGUOI* pCha;
NGUOI* pMe;
};
NGUOI x;
Ten (51 bytes)
namsinh (2 bytes)
pCha (4 bytes)
pMe (4 butes)
x
7
3- Tác vụ đệ quy
 Có thể diễn đạt nhiều tác vụ hướng đệ quy.
 1+2+3+...+ (n-2) + (n-1) + n
 Cộng( 1 tới n) = n + Cộng (1 tới n-1)
 Điều kiện biên là điều kiện ngưng không đệ quy nữa.
 Điều kiện biên: Cộng (1 tới 1) là 1
 Cộng (1 tới n) = 1, n=1
n + Cộng (1 tới n-1)
8
4- Cách viết hàm đệ quy
 Định nghĩa tác vụ đệ quy theo ngôn ngữ tự
nhiên thế nào thì hàm cũng viết như thế.
 Thí dụ: n! = 1*2*3*4*5*... * n
n! = 1, n<=1
n* (n-1)!
9
Cách viết hàm đệ quy...
n! = 1, n<=1
n* (n-1)!
Điều kiện biên
2 dòng
2 dòng
10
Luyện tập viết hàm đệ quy
 Tìm trị phần tử thứ n của 1 cấp số cộng có
số hạng đầu là a, công sai là r
Un = a, n=1
r + Un-1
 Tìm trị phần tử thứ n của 1 cấp số nhân có
số hạng đầu là a, công bội là q
Un = a, n=1
q*Un-1
Bạn tự viết
11
Luyện tập viết hàm đệ quy
 Xuất biểu diễn nhị phân của 1 số nguyên
dương.
13  1101
Dạng nhị phân
của 6 (13/2)
13%2
Xuất dạng nhị phân của n:
Nếu (n>=0)
{ Nếu (n/2>0) Xuất dạng nhị phân của n/2;
Xuất (n%2);
}
Bạn tự viết
12
Luyện tập viết hàm đệ quy...
Viết 2 hàm xuất hệ 8, hệ 16 cho 1 số long n
13
5- Phân loại hàm đệ quy
 Tùy thuộc cách diễn đạt tác vụ đệ quy mà
có các loại đệ quy sau.
(1) Đệ quy tuyến tính.
(2) Đệ quy nhị phân.
(3) Đệ quy phi tuyến
(4) Đệ quy hỗ tương.
14
5.1-Đệ quy tuyến tính
 Thân hàm gọi 1 lần chính nó
 Un = a , n=1 ( trị thứ n của cấp số cộng)
r + Un-1 , n>1
double U (int n, double a, double r)
{
if (n==1) return a;
return r + U(n-1,a,r);
}
15
5.2-Đệ quy nhị phân
 Thân hàm gọi 2 lần chính nó.
 Chuỗi số Fibonacci: 1 1 2 3 5 8 13 ...
 Un = 1, n=1,2
Un-2 + Un-1 , n>2
long Fibo (int n)
{
if (n<=2) return 1;
return Fibo(n-2) + Fibo(n-1);
}
16
5.3 - Đệ quy phi tuyến
 Thân hàm lặp gọi 1 số lần chính nó
 Un = n , n <6
Un-5 +Un-4 + Un-3 +Un-2 +Un-1 ,n >6
long U ( int n)
{ if (n<6) return n;
long S= 0;
for (int i = 5; i>0; i--) S+= U(n-i);
return S;
17
5.4 - Đệ quy hỗ tương
 2 hàm đệ quy gọi nhau
 Un = n , n<5
Un-1 + Gn-2 , n>=5
 Gn = n-3 , n<8
Un-1 + Gn-2 , n>8
long G(int n);
long U ( int n)
{ if (n<5) return n;
return U(n-1) + G(n-2);
}
long G(int n)
{ if (n<8) return n-3;
return U(n-1) + G(n-2);
}
18
6- Kỹ thuật tìm giải thuật đệ quy
 Thông số hóa bài toán.
 Tìm các điều kiện biên(chặn), tìm giải thuật
cho các tình huống này.
 Tìm giải thuật tổng quát theo hướng đệ quy
lui dần về tình huống bị chặn.
19
Tính tổng 1 mảng a, n phần tử
 Thông số hóa: int* a, int n
 Điều kiện biên: Mảng 0 phần tử thì tổng bằng 0.
 Giải thuật chung:
Sum(a,n) = a[0] + a[1] + a[2] + ... + a[n-2] +a[n-1]
Sum(a,n-1)
Sum (a,n) = 0 , n=0
a[n-1] + Sum(a, n-1)
 Với các thuật toán đệ quy trên mảng, ta nên giảm dần
số phần tử của mảng.
20
Tìm trị lớn nhất của mảng a, n phần tử
 Thông số hóa: int*a, int n
 Điều kiện biên: Mảng 1 phần tử thì trị lớn nhất là a[0].
 Giải thuật chung:
Max(a,n) = a[0] , a[1] , a[2] , ... , a[n-2] , a[n-1]
Max(a,n-1)
Max (a,n) = a[0] , n=1
a[n-1] > Max(a, n-1)? a[n-1] : Max(a,n-1)
 Thuật toán đệ quy tìm trị nhỏ nhất của mảng?
Do yourself.
21
Xuất ngược 1 chuỗi
 S= “QWERT”  TREWQ
Ký tự đầu
của S
Kết qủa xuất ngược
chuỗi &S[1]
Xuất_ngược (S) :
L= strlen(S);
if (L>1) Xuất_ngược (S+1);
if (L) Xuất (*S);
Nghĩa là có
chuỗi con
22
Bài toán xuất ngược 1 chuỗi
23
7- Bài toán Tháp Hà Nội
A B C
24
Bài toán Tháp Hà Nội
Chuyển n đĩa từ cột X
sang cột Z nhờ cột
trung gian Y
(1) Chuyển n-1 đĩa từ cột X sang cột Y nhờ
cột trung gian Z vì các đĩa bên trên là các
đĩa nhỏ.
(2) Chuyển đĩa n (to nhất) từ cột X sang cột
đích Z.
(3) Làm lại cho n-1 đĩa còn lại đang ở cột Y
sang cột Z với X là cột trung gian.
25
Tháp Hà Nội...
3
2
1
A CB
3 2 1
32
1
3
2
1
26
8- Cách thực thi 1 hàm đệ quy
 Xét hàm tính giai thừa của 5
n: 5
Kq
n: 4
Kq
n: 3
Kq
n: 2
Kq
n: 1
Kq
27
Cách thực thi 1 hàm đệ quy
 Xét hàm tính giai thừa của 5
n: 5
Kq:
n: 4
Kq:
n: 3
Kq:
n: 2
Kq:
n: 1
Kq 1
28
Cách thực thi 1 hàm đệ quy
 Xét hàm tính giai thừa của 5
n: 5
Kq:
n: 4
Kq:
n: 3
Kq:
n: 2
Kq:
n: 1
Kq 1
n: 2
Kq: 2*1=2
29
Cách thực thi 1 hàm đệ quy
 Xét hàm tính giai thừa của 5
n: 5
Kq:
n: 4
Kq:
n: 3
Kq:
n: 2
Kq: 2
n: 3
Kq: 3*2=6
30
Cách thực thi 1 hàm đệ quy
 Xét hàm tính giai thừa của 5
n: 5
Kq:
n: 4
Kq:
n: 3
Kq: 6
n: 4
Kq: 4*6=24
31
Cách thực thi 1 hàm đệ quy
 Xét hàm tính giai thừa của 5
n: 5
Kq:
n: 4
Kq: 24
n: 5
Kq:5*24=120
32
Cách thực thi 1 hàm đệ quy
 Xét hàm tính giai thừa của 5
n: 5
Kq: 120
33
9- Nhận xét về hàm đệ quy
HÀM ĐỆ QUY: Vừa tốn bộ nhớ
vừa chạy chậm
Giải thuật đệ quy đẹp (gọn gàng), dễ chuyển
thành chương trình.
Nhiều ngôn ngữ không hỗ trợ giải thuật đệ quy
(Fortran).
Nhiều giải thuật rất dễ mô tả dạng đệ quy
nhưng lại rất khó mô tả với giải thuật không-đệ-
quy.
34
10- Khử đệ quy
 Là quá trình chuyển đổi 1 giải thuật đệ quy
thành giải thuật không đệ quy.
 Chưa có giải pháp cho việc chuyển đổi này
một cách tổng quát.
 Cách tiếp cận:
(1) Dùng quan điểm đệ quy để tìm giải thuật cho
bài toán.
(2) Mã hóa giải thuật đệ quy.
(3) Khử đệ quy để có giải thuật không-đệ-quy.
35
10.1- Khử đệ quy bằng vòng lặp
 Ý tưởng: Lưu lại các trị của các lần tính toán
trước làm dữ liệu cho việc tính toán của lần sau.
 Đi từ điều kiện biên đi tới điều kiện kết thúc.
36
Thí dụ: Hàm tính giai thừa của n
long GiaiThua( int n)
{ if (n<2) return 1;
return n * GiaiThua(n-1);
}
Trị cần lưu
long GiaiThua( int n)
{ long K=1;
for (int i =2; i<=n;i++) K=K*i;
return K;
}
Điều kiện biên
K chính là kết qủa của trị
giai thừa trước đó
37
Thí dụ hàm tính trị thứ n của dãy Fibonacci:
1 1 2 3 5 8...long Fibo(int n)
{ if (n<=2) return 1; // hai chặn
return Fibo(n-2) + Fibo (n-1);
} t
1
t
2
t3=t1+t
2
t1 t2 t3
t1 t2 t3
t1 t2 t3
long Fibo(int n)
{ if (n<=2) return 1; // hai chặn
long t1=1, t2=1;
for (int i=3; i<=n;i++)
{ t3=t1+t2;
t1=t2;
t2= t3;
}
return t3;
}
i = 3 4 5 6
38
10.2- Khử đệ quy bằng stack
 Khởi tạo stack với số phần tử phù hợp.
 Đưa bộ tham số đầu vào stack.
 Khi Stack không trống
{
- Lấy bộ tham số ra khỏi stack;
- Xử lý các tác vụ cơ bản ứng với tham
số này. Nếu gặp 1 tác vụ đệ quy thì lại đưa
bộ tham số của tác vụ đệ quy tương ứng vào
stack.
}
39
Bài toán tháp Hà Nội khử - đệ quy
Giải thuật đệ quy
40
Tóm tắt
 Hàm đệ quy là hàm mà trong thân hàm lại
gọi chính nó.
 Hàm đệ quy kém hiệu qủa vì: tốn bộ nhớ va
gọi hàm qúa nhiều lần. Tuy nhiên viết hàm
đệ quy rất ngắn gọn.
 Vòng lặp và stack là những kỹ thuật giúp khử
giải thuật đệ quy.
41
Bài tập
 Viết chương trình xuất n trị đầu tiên của 1 cấp số cộng
có số hạng đầu là a (nhập từ bàn phím), công sai r
(nhập từ bàn phím). Sử dụng kỹ thuật đệ quy để xây
dựng hàm tính trị thứ i của 1 cấp số cộng này.
 Dùng kỹ thuật đệ quy để giải phương trình f(x) trong
khoảng [a,b] với sai số epsilon.
 Gọi px là pointer của nghiệm
if (f(a).f(b)>0) return NULL (không có nghiệm)
else if (b-a <= epsilon) return &a;
else
{ c=(b+a)/2) ;
if (f(a).f(c)<=0) return Tìm nghiệm trong đoạn [a,c];
else return Tìm nghiệm trong đoạn [c,b];
}
42
Bài tập
 Viết chương trình nhập 1 mảng số int, nhập 1 trị x, tìm vị trí có
x cuối cùng trong mảng. Dùng kỹ thuật đệ quy để tìm vị trí này.
Tìm x trong a[], n : -1 nếu n<0
n-1 nếu a[n-1]=x
Tìm x trong a, n-1
 Viết chương trình nhập 1 ma trận vuông các số int , nhập 1 trị
x. Tìm vị trí <dòng,cột> có x dùng kỹ thuật đệ quy.
Tìm vị trí có x trong
ma trận m,n
NULL, nếu n<1
nếu có x trong cột cuối thì return vị trí này
nếu có x trong hàng cuối thì return vị trí này
return Tìm vị trí có x trong m,n-1

Más contenido relacionado

La actualidad más candente

Các phương pháp giải mũ. logarit
Các phương pháp giải mũ. logaritCác phương pháp giải mũ. logarit
Các phương pháp giải mũ. logaritThế Giới Tinh Hoa
 
Cac bai tap kinh dien va cach giai hno3
Cac bai tap kinh dien va cach giai hno3Cac bai tap kinh dien va cach giai hno3
Cac bai tap kinh dien va cach giai hno3Bích Huệ
 
[Vnmath.com] chuyên ðề lượng giác qua các kỳ thi
[Vnmath.com] chuyên ðề lượng giác qua các kỳ thi[Vnmath.com] chuyên ðề lượng giác qua các kỳ thi
[Vnmath.com] chuyên ðề lượng giác qua các kỳ thiAntonio Krista
 
CÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptx
CÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptxCÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptx
CÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptxHuyKhangPhm
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhChien Dang
 
Các phương pháp đếm nâng cao
Các phương pháp đếm nâng caoCác phương pháp đếm nâng cao
Các phương pháp đếm nâng caoThế Giới Tinh Hoa
 
Chuyên đề 5 thống kê
Chuyên đề 5 thống kêChuyên đề 5 thống kê
Chuyên đề 5 thống kêphamchidac
 
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnTính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnChien Dang
 
9 phuong trinh nghiem nguyen htq
9 phuong trinh nghiem nguyen htq9 phuong trinh nghiem nguyen htq
9 phuong trinh nghiem nguyen htqHồng Quang
 
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongBài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongHoàng Như Mộc Miên
 
kỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàmkỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàmljmonking
 
Một số tính chất của vành giao hoán artin
Một số tính chất của vành giao hoán artinMột số tính chất của vành giao hoán artin
Một số tính chất của vành giao hoán artinNOT
 
Do do tich-phan-thai_thuan_quang mearsure and intergral
Do do tich-phan-thai_thuan_quang mearsure and intergralDo do tich-phan-thai_thuan_quang mearsure and intergral
Do do tich-phan-thai_thuan_quang mearsure and intergralBui Loi
 
Chuyen de toan logic roi rac li thuyet to hop
Chuyen de toan logic  roi rac li thuyet to hopChuyen de toan logic  roi rac li thuyet to hop
Chuyen de toan logic roi rac li thuyet to hoplephucduc06011999
 
Bài giảng xác suất thống kê
Bài giảng xác suất thống kêBài giảng xác suất thống kê
Bài giảng xác suất thống kêHọc Huỳnh Bá
 

La actualidad más candente (20)

Các phương pháp giải mũ. logarit
Các phương pháp giải mũ. logaritCác phương pháp giải mũ. logarit
Các phương pháp giải mũ. logarit
 
Cac bai tap kinh dien va cach giai hno3
Cac bai tap kinh dien va cach giai hno3Cac bai tap kinh dien va cach giai hno3
Cac bai tap kinh dien va cach giai hno3
 
Li̇neer cebi̇r 06
Li̇neer cebi̇r 06Li̇neer cebi̇r 06
Li̇neer cebi̇r 06
 
[Vnmath.com] chuyên ðề lượng giác qua các kỳ thi
[Vnmath.com] chuyên ðề lượng giác qua các kỳ thi[Vnmath.com] chuyên ðề lượng giác qua các kỳ thi
[Vnmath.com] chuyên ðề lượng giác qua các kỳ thi
 
CÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptx
CÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptxCÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptx
CÔNG THỨC TÍCH PHÂN CAUCHY và ứng dụng trong giải tích phức.pptx
 
Bài tập hàm biến phức
Bài tập hàm biến phứcBài tập hàm biến phức
Bài tập hàm biến phức
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
 
04 hang ma tran
04 hang ma tran04 hang ma tran
04 hang ma tran
 
Các phương pháp đếm nâng cao
Các phương pháp đếm nâng caoCác phương pháp đếm nâng cao
Các phương pháp đếm nâng cao
 
Chuyên đề 5 thống kê
Chuyên đề 5 thống kêChuyên đề 5 thống kê
Chuyên đề 5 thống kê
 
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyếnTính toán khoa học - Chương 4: Giải phương trình phi tuyến
Tính toán khoa học - Chương 4: Giải phương trình phi tuyến
 
9 phuong trinh nghiem nguyen htq
9 phuong trinh nghiem nguyen htq9 phuong trinh nghiem nguyen htq
9 phuong trinh nghiem nguyen htq
 
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng LongBài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
Bài Giảng Đại Số Tuyến Tính - ĐH Thăng Long
 
kỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàmkỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàm
 
Một số tính chất của vành giao hoán artin
Một số tính chất của vành giao hoán artinMột số tính chất của vành giao hoán artin
Một số tính chất của vành giao hoán artin
 
Do do tich-phan-thai_thuan_quang mearsure and intergral
Do do tich-phan-thai_thuan_quang mearsure and intergralDo do tich-phan-thai_thuan_quang mearsure and intergral
Do do tich-phan-thai_thuan_quang mearsure and intergral
 
Chuyen de toan logic roi rac li thuyet to hop
Chuyen de toan logic  roi rac li thuyet to hopChuyen de toan logic  roi rac li thuyet to hop
Chuyen de toan logic roi rac li thuyet to hop
 
Bìa tập đại số tổ hợp
Bìa tập đại số tổ hợpBìa tập đại số tổ hợp
Bìa tập đại số tổ hợp
 
Bài giảng xác suất thống kê
Bài giảng xác suất thống kêBài giảng xác suất thống kê
Bài giảng xác suất thống kê
 
Lượng giác
Lượng giác Lượng giác
Lượng giác
 

Destacado

Giao trinh ppdh tin long le (20081120)
Giao trinh ppdh tin   long le  (20081120)Giao trinh ppdh tin   long le  (20081120)
Giao trinh ppdh tin long le (20081120)Hoa Cỏ May
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05giang
 
Ctdl C04
Ctdl C04Ctdl C04
Ctdl C04giang
 
Ctdl C03
Ctdl C03Ctdl C03
Ctdl C03giang
 
Dhhh ctdlgt bai giang cau truc du lieu
Dhhh ctdlgt bai giang cau truc du lieuDhhh ctdlgt bai giang cau truc du lieu
Dhhh ctdlgt bai giang cau truc du lieusaobien44
 
Ctdl C09
Ctdl C09Ctdl C09
Ctdl C09giang
 
Ctdl C06
Ctdl C06Ctdl C06
Ctdl C06giang
 
Ctdl C02
Ctdl C02Ctdl C02
Ctdl C02giang
 
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàngGiáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàngShin Nosuke
 
Bài tập CTDL và GT 11
Bài tập CTDL và GT 11Bài tập CTDL và GT 11
Bài tập CTDL và GT 11Hồ Lợi
 
Ctdl C08
Ctdl C08Ctdl C08
Ctdl C08giang
 
Gioi Thieu
Gioi ThieuGioi Thieu
Gioi Thieugiang
 
Ctdl C11
Ctdl C11Ctdl C11
Ctdl C11giang
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01giang
 
Ctdl C10
Ctdl C10Ctdl C10
Ctdl C10giang
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Do Ngoc Tuan
 
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trìnhGiáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trìnhTrần Văn Nam
 
Bài tập CTDL và GT 3
Bài tập CTDL và GT 3Bài tập CTDL và GT 3
Bài tập CTDL và GT 3Hồ Lợi
 

Destacado (20)

Tin11 bai16-giao an
Tin11 bai16-giao anTin11 bai16-giao an
Tin11 bai16-giao an
 
Giao trinh ppdh tin long le (20081120)
Giao trinh ppdh tin   long le  (20081120)Giao trinh ppdh tin   long le  (20081120)
Giao trinh ppdh tin long le (20081120)
 
Ctdl C05
Ctdl C05Ctdl C05
Ctdl C05
 
Ctdl C04
Ctdl C04Ctdl C04
Ctdl C04
 
Ctdl ktlt tuan5
Ctdl ktlt tuan5Ctdl ktlt tuan5
Ctdl ktlt tuan5
 
Ctdl C03
Ctdl C03Ctdl C03
Ctdl C03
 
Dhhh ctdlgt bai giang cau truc du lieu
Dhhh ctdlgt bai giang cau truc du lieuDhhh ctdlgt bai giang cau truc du lieu
Dhhh ctdlgt bai giang cau truc du lieu
 
Ctdl C09
Ctdl C09Ctdl C09
Ctdl C09
 
Ctdl C06
Ctdl C06Ctdl C06
Ctdl C06
 
Ctdl C02
Ctdl C02Ctdl C02
Ctdl C02
 
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàngGiáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
Giáo trình cấu trúc dữ liệu và giải thuật của lê minh hoàng
 
Bài tập CTDL và GT 11
Bài tập CTDL và GT 11Bài tập CTDL và GT 11
Bài tập CTDL và GT 11
 
Ctdl C08
Ctdl C08Ctdl C08
Ctdl C08
 
Gioi Thieu
Gioi ThieuGioi Thieu
Gioi Thieu
 
Ctdl C11
Ctdl C11Ctdl C11
Ctdl C11
 
Ctdl C01
Ctdl C01Ctdl C01
Ctdl C01
 
Ctdl C10
Ctdl C10Ctdl C10
Ctdl C10
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
 
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trìnhGiáo trình cấu trúc dữ liệu và giải thuật phần 1   tài liệu, ebook, giáo trình
Giáo trình cấu trúc dữ liệu và giải thuật phần 1 tài liệu, ebook, giáo trình
 
Bài tập CTDL và GT 3
Bài tập CTDL và GT 3Bài tập CTDL và GT 3
Bài tập CTDL và GT 3
 

Similar a Gt de quy

Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2Hồ Lợi
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Do Ngoc Tuan
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Loc Tran
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pBui Loi
 
Nmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_inNmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_inHuy Nguyễn
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Nguyễn Công Hoàng
 
Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hocVũ Nam
 
Phân tích một số thuật toán
Phân tích một số thuật toánPhân tích một số thuật toán
Phân tích một số thuật toánHồ Lợi
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4Nguyễn Công Hoàng
 
Phương pháp số và lập trình - Nội suy, Đạo hàm, Tích phân
Phương pháp số và lập trình - Nội suy, Đạo hàm, Tích phânPhương pháp số và lập trình - Nội suy, Đạo hàm, Tích phân
Phương pháp số và lập trình - Nội suy, Đạo hàm, Tích phânHajunior9x
 
Chuong 05 de quy
Chuong 05 de quyChuong 05 de quy
Chuong 05 de quyCau Chu Nho
 
Nhị thức newton và Phương pháp giải các bài tập về Nhị thức newton
Nhị thức newton và Phương pháp giải các bài tập về Nhị thức newtonNhị thức newton và Phương pháp giải các bài tập về Nhị thức newton
Nhị thức newton và Phương pháp giải các bài tập về Nhị thức newtonLinh Nguyễn
 
BoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptx
BoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptxBoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptx
BoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptxHongNgcCnh2
 
Bai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBrand Xanh
 

Similar a Gt de quy (20)

Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2Chuong 2   co so phan tich do phuc tap cua giai thuat - sinh vien 2
Chuong 2 co so phan tich do phuc tap cua giai thuat - sinh vien 2
 
Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
 
Quy hoạch động
Quy hoạch độngQuy hoạch động
Quy hoạch động
 
Quy Hoach Dong
Quy Hoach DongQuy Hoach Dong
Quy Hoach Dong
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo p
 
Nmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_inNmlt c16 ky_thuatlaptrinhdequy_in
Nmlt c16 ky_thuatlaptrinhdequy_in
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
 
Chuong 2. de quy dai hoc
Chuong 2. de quy   dai hocChuong 2. de quy   dai hoc
Chuong 2. de quy dai hoc
 
Pt04 de qui
Pt04 de quiPt04 de qui
Pt04 de qui
 
Thuat Toan
Thuat ToanThuat Toan
Thuat Toan
 
Thuat Toan 2
Thuat Toan 2Thuat Toan 2
Thuat Toan 2
 
Phân tích một số thuật toán
Phân tích một số thuật toánPhân tích một số thuật toán
Phân tích một số thuật toán
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
Giáo trình Phân tích và thiết kế giải thuật - CHAP 4
 
Phương pháp số và lập trình - Nội suy, Đạo hàm, Tích phân
Phương pháp số và lập trình - Nội suy, Đạo hàm, Tích phânPhương pháp số và lập trình - Nội suy, Đạo hàm, Tích phân
Phương pháp số và lập trình - Nội suy, Đạo hàm, Tích phân
 
Chuong2 de qui
Chuong2 de quiChuong2 de qui
Chuong2 de qui
 
Chuong 05 de quy
Chuong 05 de quyChuong 05 de quy
Chuong 05 de quy
 
Nhị thức newton và Phương pháp giải các bài tập về Nhị thức newton
Nhị thức newton và Phương pháp giải các bài tập về Nhị thức newtonNhị thức newton và Phương pháp giải các bài tập về Nhị thức newton
Nhị thức newton và Phương pháp giải các bài tập về Nhị thức newton
 
BoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptx
BoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptxBoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptx
BoiDuongHSGTin_DuyetToanBoVaCacPhuongPhapCaiTien.pptx
 
Bai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tuBai thi Nghiem ky thuat dien tu
Bai thi Nghiem ky thuat dien tu
 

Más de Hoa Cỏ May (20)

Baitap dongbo.bdf
Baitap dongbo.bdfBaitap dongbo.bdf
Baitap dongbo.bdf
 
Gt de quy_2
Gt de quy_2Gt de quy_2
Gt de quy_2
 
Exception 3
Exception 3Exception 3
Exception 3
 
Itp th de02
Itp th de02Itp th de02
Itp th de02
 
Ex chapter 7
Ex chapter 7Ex chapter 7
Ex chapter 7
 
Ex chapter 6
Ex chapter 6Ex chapter 6
Ex chapter 6
 
Ex chapter 5
Ex chapter 5Ex chapter 5
Ex chapter 5
 
Ex chapter 4
Ex chapter 4Ex chapter 4
Ex chapter 4
 
Ex chapter 3
Ex chapter 3Ex chapter 3
Ex chapter 3
 
Ex chapter 2
Ex chapter 2Ex chapter 2
Ex chapter 2
 
86227349 giao-trinh-lap-trinh-c
86227349 giao-trinh-lap-trinh-c86227349 giao-trinh-lap-trinh-c
86227349 giao-trinh-lap-trinh-c
 
Bt word 3
Bt word 3Bt word 3
Bt word 3
 
Bt word 2
Bt word 2Bt word 2
Bt word 2
 
Bt word 1
Bt word 1Bt word 1
Bt word 1
 
Bai tapwindows 2
Bai tapwindows 2Bai tapwindows 2
Bai tapwindows 2
 
Bai tap ppt
Bai tap pptBai tap ppt
Bai tap ppt
 
Tai lieu 02_-_phieu_bai_tap_th07_
Tai lieu 02_-_phieu_bai_tap_th07_Tai lieu 02_-_phieu_bai_tap_th07_
Tai lieu 02_-_phieu_bai_tap_th07_
 
Phan phoi ct tin hoc thpt 2011 2012
Phan phoi ct tin hoc thpt 2011 2012Phan phoi ct tin hoc thpt 2011 2012
Phan phoi ct tin hoc thpt 2011 2012
 
Lecture05
Lecture05Lecture05
Lecture05
 
Lecture04
Lecture04Lecture04
Lecture04
 

Gt de quy

  • 2. 2 Mục tiêu Đến cuối chương, bạn có thể:  Giải thích được giải thuật đệ quy là gì.  Biết cách diễn đạt 1 tác vụ hướng đệ quy.  Biết cách hiện thực hàm đệ quy  Phân loại được các loại đệ quy  Giải thích được cách chạy một hàm đệ quy.  Biết cách khử một số giải thuật đệ quy.
  • 3. 3 1- Đệ quy là gì (Recursion)  Định nghĩa tường minh: Giải thích khái niệm mới bằng những khái niệm đã có.  Người = Động vật cấp cao.  Định nghĩa lòng vòng: Giải thích 1 khái niệm bằng chính khái niệm đó.  Đệ quy: Đưa ra 1 định nghĩa có sử dụng chính khái niệm đang cần định nghĩa( quay về ).  Người = con của hai người khác.
  • 4. 4 Đệ quy là gì?...  Con người hiểu được định nghĩa đệ quy vì đệ quy có chặn (điều kiện biên, điều kiện suy biến) – có thể là biên ngầm định.  Người = con của hai người khác  Ngầm hiểu là có 2 người đầu tiên.  Thư mục = các thư mục con + các tập tin  Ngầm hiểu: Hiển nhiên tồn tại thư mục gốc là cả ổ đĩa.
  • 5. 5 2- Kiểu dữ liệu đệ quy  Một người được mô tả bằng: tên, năm sinh, cha (một người khác), mẹ (một người khác). struct NGUOI { char Ten[51]; int namsinh; NGUOI cha; NGUOI me; }; Cấu trúc này không khả thi trong máy tính vì không thể cấp bộ nhớ
  • 6. 6 Kiểu dữ liệu đệ quy...  Sửa lại: struct NGUOI { char Ten[51]; int namsinh; NGUOI* pCha; NGUOI* pMe; }; NGUOI x; Ten (51 bytes) namsinh (2 bytes) pCha (4 bytes) pMe (4 butes) x
  • 7. 7 3- Tác vụ đệ quy  Có thể diễn đạt nhiều tác vụ hướng đệ quy.  1+2+3+...+ (n-2) + (n-1) + n  Cộng( 1 tới n) = n + Cộng (1 tới n-1)  Điều kiện biên là điều kiện ngưng không đệ quy nữa.  Điều kiện biên: Cộng (1 tới 1) là 1  Cộng (1 tới n) = 1, n=1 n + Cộng (1 tới n-1)
  • 8. 8 4- Cách viết hàm đệ quy  Định nghĩa tác vụ đệ quy theo ngôn ngữ tự nhiên thế nào thì hàm cũng viết như thế.  Thí dụ: n! = 1*2*3*4*5*... * n n! = 1, n<=1 n* (n-1)!
  • 9. 9 Cách viết hàm đệ quy... n! = 1, n<=1 n* (n-1)! Điều kiện biên 2 dòng 2 dòng
  • 10. 10 Luyện tập viết hàm đệ quy  Tìm trị phần tử thứ n của 1 cấp số cộng có số hạng đầu là a, công sai là r Un = a, n=1 r + Un-1  Tìm trị phần tử thứ n của 1 cấp số nhân có số hạng đầu là a, công bội là q Un = a, n=1 q*Un-1 Bạn tự viết
  • 11. 11 Luyện tập viết hàm đệ quy  Xuất biểu diễn nhị phân của 1 số nguyên dương. 13  1101 Dạng nhị phân của 6 (13/2) 13%2 Xuất dạng nhị phân của n: Nếu (n>=0) { Nếu (n/2>0) Xuất dạng nhị phân của n/2; Xuất (n%2); } Bạn tự viết
  • 12. 12 Luyện tập viết hàm đệ quy... Viết 2 hàm xuất hệ 8, hệ 16 cho 1 số long n
  • 13. 13 5- Phân loại hàm đệ quy  Tùy thuộc cách diễn đạt tác vụ đệ quy mà có các loại đệ quy sau. (1) Đệ quy tuyến tính. (2) Đệ quy nhị phân. (3) Đệ quy phi tuyến (4) Đệ quy hỗ tương.
  • 14. 14 5.1-Đệ quy tuyến tính  Thân hàm gọi 1 lần chính nó  Un = a , n=1 ( trị thứ n của cấp số cộng) r + Un-1 , n>1 double U (int n, double a, double r) { if (n==1) return a; return r + U(n-1,a,r); }
  • 15. 15 5.2-Đệ quy nhị phân  Thân hàm gọi 2 lần chính nó.  Chuỗi số Fibonacci: 1 1 2 3 5 8 13 ...  Un = 1, n=1,2 Un-2 + Un-1 , n>2 long Fibo (int n) { if (n<=2) return 1; return Fibo(n-2) + Fibo(n-1); }
  • 16. 16 5.3 - Đệ quy phi tuyến  Thân hàm lặp gọi 1 số lần chính nó  Un = n , n <6 Un-5 +Un-4 + Un-3 +Un-2 +Un-1 ,n >6 long U ( int n) { if (n<6) return n; long S= 0; for (int i = 5; i>0; i--) S+= U(n-i); return S;
  • 17. 17 5.4 - Đệ quy hỗ tương  2 hàm đệ quy gọi nhau  Un = n , n<5 Un-1 + Gn-2 , n>=5  Gn = n-3 , n<8 Un-1 + Gn-2 , n>8 long G(int n); long U ( int n) { if (n<5) return n; return U(n-1) + G(n-2); } long G(int n) { if (n<8) return n-3; return U(n-1) + G(n-2); }
  • 18. 18 6- Kỹ thuật tìm giải thuật đệ quy  Thông số hóa bài toán.  Tìm các điều kiện biên(chặn), tìm giải thuật cho các tình huống này.  Tìm giải thuật tổng quát theo hướng đệ quy lui dần về tình huống bị chặn.
  • 19. 19 Tính tổng 1 mảng a, n phần tử  Thông số hóa: int* a, int n  Điều kiện biên: Mảng 0 phần tử thì tổng bằng 0.  Giải thuật chung: Sum(a,n) = a[0] + a[1] + a[2] + ... + a[n-2] +a[n-1] Sum(a,n-1) Sum (a,n) = 0 , n=0 a[n-1] + Sum(a, n-1)  Với các thuật toán đệ quy trên mảng, ta nên giảm dần số phần tử của mảng.
  • 20. 20 Tìm trị lớn nhất của mảng a, n phần tử  Thông số hóa: int*a, int n  Điều kiện biên: Mảng 1 phần tử thì trị lớn nhất là a[0].  Giải thuật chung: Max(a,n) = a[0] , a[1] , a[2] , ... , a[n-2] , a[n-1] Max(a,n-1) Max (a,n) = a[0] , n=1 a[n-1] > Max(a, n-1)? a[n-1] : Max(a,n-1)  Thuật toán đệ quy tìm trị nhỏ nhất của mảng? Do yourself.
  • 21. 21 Xuất ngược 1 chuỗi  S= “QWERT”  TREWQ Ký tự đầu của S Kết qủa xuất ngược chuỗi &S[1] Xuất_ngược (S) : L= strlen(S); if (L>1) Xuất_ngược (S+1); if (L) Xuất (*S); Nghĩa là có chuỗi con
  • 22. 22 Bài toán xuất ngược 1 chuỗi
  • 23. 23 7- Bài toán Tháp Hà Nội A B C
  • 24. 24 Bài toán Tháp Hà Nội Chuyển n đĩa từ cột X sang cột Z nhờ cột trung gian Y (1) Chuyển n-1 đĩa từ cột X sang cột Y nhờ cột trung gian Z vì các đĩa bên trên là các đĩa nhỏ. (2) Chuyển đĩa n (to nhất) từ cột X sang cột đích Z. (3) Làm lại cho n-1 đĩa còn lại đang ở cột Y sang cột Z với X là cột trung gian.
  • 25. 25 Tháp Hà Nội... 3 2 1 A CB 3 2 1 32 1 3 2 1
  • 26. 26 8- Cách thực thi 1 hàm đệ quy  Xét hàm tính giai thừa của 5 n: 5 Kq n: 4 Kq n: 3 Kq n: 2 Kq n: 1 Kq
  • 27. 27 Cách thực thi 1 hàm đệ quy  Xét hàm tính giai thừa của 5 n: 5 Kq: n: 4 Kq: n: 3 Kq: n: 2 Kq: n: 1 Kq 1
  • 28. 28 Cách thực thi 1 hàm đệ quy  Xét hàm tính giai thừa của 5 n: 5 Kq: n: 4 Kq: n: 3 Kq: n: 2 Kq: n: 1 Kq 1 n: 2 Kq: 2*1=2
  • 29. 29 Cách thực thi 1 hàm đệ quy  Xét hàm tính giai thừa của 5 n: 5 Kq: n: 4 Kq: n: 3 Kq: n: 2 Kq: 2 n: 3 Kq: 3*2=6
  • 30. 30 Cách thực thi 1 hàm đệ quy  Xét hàm tính giai thừa của 5 n: 5 Kq: n: 4 Kq: n: 3 Kq: 6 n: 4 Kq: 4*6=24
  • 31. 31 Cách thực thi 1 hàm đệ quy  Xét hàm tính giai thừa của 5 n: 5 Kq: n: 4 Kq: 24 n: 5 Kq:5*24=120
  • 32. 32 Cách thực thi 1 hàm đệ quy  Xét hàm tính giai thừa của 5 n: 5 Kq: 120
  • 33. 33 9- Nhận xét về hàm đệ quy HÀM ĐỆ QUY: Vừa tốn bộ nhớ vừa chạy chậm Giải thuật đệ quy đẹp (gọn gàng), dễ chuyển thành chương trình. Nhiều ngôn ngữ không hỗ trợ giải thuật đệ quy (Fortran). Nhiều giải thuật rất dễ mô tả dạng đệ quy nhưng lại rất khó mô tả với giải thuật không-đệ- quy.
  • 34. 34 10- Khử đệ quy  Là quá trình chuyển đổi 1 giải thuật đệ quy thành giải thuật không đệ quy.  Chưa có giải pháp cho việc chuyển đổi này một cách tổng quát.  Cách tiếp cận: (1) Dùng quan điểm đệ quy để tìm giải thuật cho bài toán. (2) Mã hóa giải thuật đệ quy. (3) Khử đệ quy để có giải thuật không-đệ-quy.
  • 35. 35 10.1- Khử đệ quy bằng vòng lặp  Ý tưởng: Lưu lại các trị của các lần tính toán trước làm dữ liệu cho việc tính toán của lần sau.  Đi từ điều kiện biên đi tới điều kiện kết thúc.
  • 36. 36 Thí dụ: Hàm tính giai thừa của n long GiaiThua( int n) { if (n<2) return 1; return n * GiaiThua(n-1); } Trị cần lưu long GiaiThua( int n) { long K=1; for (int i =2; i<=n;i++) K=K*i; return K; } Điều kiện biên K chính là kết qủa của trị giai thừa trước đó
  • 37. 37 Thí dụ hàm tính trị thứ n của dãy Fibonacci: 1 1 2 3 5 8...long Fibo(int n) { if (n<=2) return 1; // hai chặn return Fibo(n-2) + Fibo (n-1); } t 1 t 2 t3=t1+t 2 t1 t2 t3 t1 t2 t3 t1 t2 t3 long Fibo(int n) { if (n<=2) return 1; // hai chặn long t1=1, t2=1; for (int i=3; i<=n;i++) { t3=t1+t2; t1=t2; t2= t3; } return t3; } i = 3 4 5 6
  • 38. 38 10.2- Khử đệ quy bằng stack  Khởi tạo stack với số phần tử phù hợp.  Đưa bộ tham số đầu vào stack.  Khi Stack không trống { - Lấy bộ tham số ra khỏi stack; - Xử lý các tác vụ cơ bản ứng với tham số này. Nếu gặp 1 tác vụ đệ quy thì lại đưa bộ tham số của tác vụ đệ quy tương ứng vào stack. }
  • 39. 39 Bài toán tháp Hà Nội khử - đệ quy Giải thuật đệ quy
  • 40. 40 Tóm tắt  Hàm đệ quy là hàm mà trong thân hàm lại gọi chính nó.  Hàm đệ quy kém hiệu qủa vì: tốn bộ nhớ va gọi hàm qúa nhiều lần. Tuy nhiên viết hàm đệ quy rất ngắn gọn.  Vòng lặp và stack là những kỹ thuật giúp khử giải thuật đệ quy.
  • 41. 41 Bài tập  Viết chương trình xuất n trị đầu tiên của 1 cấp số cộng có số hạng đầu là a (nhập từ bàn phím), công sai r (nhập từ bàn phím). Sử dụng kỹ thuật đệ quy để xây dựng hàm tính trị thứ i của 1 cấp số cộng này.  Dùng kỹ thuật đệ quy để giải phương trình f(x) trong khoảng [a,b] với sai số epsilon.  Gọi px là pointer của nghiệm if (f(a).f(b)>0) return NULL (không có nghiệm) else if (b-a <= epsilon) return &a; else { c=(b+a)/2) ; if (f(a).f(c)<=0) return Tìm nghiệm trong đoạn [a,c]; else return Tìm nghiệm trong đoạn [c,b]; }
  • 42. 42 Bài tập  Viết chương trình nhập 1 mảng số int, nhập 1 trị x, tìm vị trí có x cuối cùng trong mảng. Dùng kỹ thuật đệ quy để tìm vị trí này. Tìm x trong a[], n : -1 nếu n<0 n-1 nếu a[n-1]=x Tìm x trong a, n-1  Viết chương trình nhập 1 ma trận vuông các số int , nhập 1 trị x. Tìm vị trí <dòng,cột> có x dùng kỹ thuật đệ quy. Tìm vị trí có x trong ma trận m,n NULL, nếu n<1 nếu có x trong cột cuối thì return vị trí này nếu có x trong hàng cuối thì return vị trí này return Tìm vị trí có x trong m,n-1