Professional Documents
Culture Documents
HM - QUY
(Function - Recursion)
NI DUNG
1.
2.
3.
4.
5.
6.
7.
Hm (function)
Khi nim ngn xp (stack)
Qu trnh thc thi hm
Tham s hm
Bin ton cc (global) v cc b (local)
quy (recursion)
Cc loi quy (types of recursion)
2
1. Hm
kh
#include <iostream.h>
int add (int x, int y)
{
int z;
z = x + y;
return (z);
}
void main ()
{
int i, j, k;
i = 10;
j = 20;
k = add(i, j);
cout<<"The value of k is"<<k;
}
NI DUNG
1.
2.
3.
4.
5.
6.
7.
Hm (function)
Khi nim ngn xp (stack)
Qu trnh thc thi hm
Tham s hm
Bin ton cc (global) v cc b (local)
quy (recursion)
Cc loi quy (types of recursion)
4
l phn b nh m trong cc gi tr
ca n c lu vo (Push) v ly ra (Pop) theo
kiu last in first out
NI DUNG
1.
2.
3.
4.
5.
6.
7.
Hm (function)
Khi nim ngn xp (stack)
Qu trnh thc thi hm
Tham s hm
Bin ton cc (global) v cc b (local)
quy (recursion)
Cc loi quy (types of recursion)
6
Sau
Nh vy:
Trc khi thc thi hm, my tnh s lu (Push) a ch
lnh k tip vo stack
Khi hm c thc thi xong, my tnh s ly (Pop) a
ch ra thc hin tip
7
Kt qu???
NI DUNG
1.
2.
3.
4.
5.
6.
7.
Hm (function)
Khi nim ngn xp (stack)
Qu trnh thc thi hm
Tham s hm
Bin ton cc (global) v cc b (local)
quy (recursion)
Cc loi quy (types of recursion)
9
4. Tham s hm
Tham s hm l tham tr (value):
1.
2.
10
4. Tham s hm
void f1 (int k)
{
k = k + 10;
}
void main( )
{
int i;
i = 0;
cout<<Gia tri i truoc khi goi ham
"<< i<<"\n";
f1(i);
cout<<"Gia tri i sau khi goi ham
"<< i<<\n";
}
void main( )
{
int i;
i = 0;
cout<<"Gia tri i truoc khi goi ham
"<< i<<"\n";
f1(i);
cout<<"Gia tri i sau khi goi ham
"<< i<<\n";
}
11
NI DUNG
1.
2.
3.
4.
5.
6.
7.
Hm (function)
Khi nim ngn xp (stack)
Qu trnh thc thi hm
Tham s hm
Bin ton cc (global) v cc b (local)
quy (recursion)
Cc loi quy (types of recursion)
12
5. Bin ton cc v cc b
#include <iostream.h>
int i =0;
// Global variable
void f1()
{
int i=0;
i = 50;
}
void main()
{
int i ;
// local variable for main
f1() ;
i =0;
cout<<"value of i in main "<< i<<endl;
f1();
cout<<"value of i after call "<< i<<endl;
}
Kt qu???
13
NI DUNG
1.
2.
3.
4.
5.
6.
7.
Hm (function)
Khi nim ngn xp (stack)
Qu trnh thc thi hm
Tham s hm
Bin ton cc (global) v cc b (local)
quy (recursion)
Cc loi quy (types of recursion)
14
6. quy (Recursion)
L
n * (n - 1)!
n!
0! 1
d: Ta nh ngha n! nh sau:
15
6. quy (Recursion)
Phng php thit k mt gii thut quy:
Tham s ho bi ton
16
6. quy (Recursion)
Chng
17
6. quy (Recursion)
n * (n - 1)!
n!
0! 1
int GT(int n)
{
if (n==0) // im dng
return 1;
else
return n*GT(n-1);
}
18
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
xong: returns 1
CT chnh:
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
Minh ha
6. quy (Recursion)
Minh ha
CT chnh:
6. quy (Recursion)
V d 2: Tnh bng quy
Dy s Fibonaci: F1 = F2 = 1;
Fn = Fn-1 + Fn-2.
(n 3)
int Fibo(int n)
{
if (n 2) // im dng
return 1;
else
return Fibo(n-1)+Fibo(n-2);
}
32
6. quy (Recursion)
Nhn xt:
u im
Thun
bi ton
Gn (i vi chng trnh)
Khuyt im
C
khi khng c ti u v
thi gian
C th gy tn b nh
6. quy (Recursion)
Tnh
34
NI DUNG
1.
2.
3.
4.
5.
6.
7.
Hm (function)
Khi nim ngn xp (stack)
Qu trnh thc thi hm
Tham s hm
Bin ton cc (global) v cc b (local)
quy (recursion)
Cc loi quy (types of recursion)
35
7. Cc loi quy
quy
quy
quy
quy
quy
quy
36
7. Cc loi quy
int GT(int n)
{
if (n==0)
// im dng
return 1;
else
return n*GT(n-1);
}
37
7. Cc loi quy
38
7. Cc loi quy
39
7. Cc loi quy
7. Cc loi quy
41
7. Cc loi quy
42
7. Cc loi quy
43
Gii mt s bi tp quy
V
d 1: Bi ton thp H Ni
44
Gii mt s bi tp quy
V
d 1: Bi ton thp H Ni
45
Gii mt s bi tp quy
Gii thut quy bi ton Thp H Ni:
Trng hp suy bin (im dng):
Nu n = 1 th chuyn a t A qua C
Trng hp chung (n 2):
Th vi n=2: + Chuyn a th nht t A sang B
+ Chuyn a th hai t A sang C
+ Chuyn a th nht t B sang C
Tng qut:
+ Chuyn (n -1) a t A sang B (C lm trung gian)
+ Chuyn 1 a t A sang C (B lm trung gian)
+ Chuyn (n -1) a t B sang C (A lm trung gian)
46
Gii mt s bi tp quy
1 a
Gii mt s bi tp quy
1 a
Gii mt s bi tp quy
2 a
Gii mt s bi tp quy
2 a
Gii mt s bi tp quy
2 a
Gii mt s bi tp quy
2 a
Gii mt s bi tp quy
N a
Gii mt s bi tp quy
N a
Gii mt s bi tp quy
N a
Gii mt s bi tp quy
Gii thut quy bi ton Thp H Ni:
void HaNoi (int n, char A, char B, char C){
if (n==1)
cout<<A<<<< C;
else{
HaNoi(n -1, A, C, B);
HaNoi(1, A, B, C);
HaNoi(n -1, B, A, C);
}
}
56
Gii mt s bi tp quy
Bi
+ In k t cui ca chui X
+ Ly phn chui cn li
- Trng hp suy bin: Nu chui rng th khng lm
void InNguoc(char *X)
g
{
Gii mt s bi tp quy
Bi
void XuatNhiPhan(int n)
{
if (n/2>0)
XuatNhiPhan (n/2);
cout<<n%2;
}
58
Gii mt s bi tp quy
Bi
59
Gii mt s bi tp quy
Bi
Gii mt s bi tp quy
Bi
Tng cc ch s ca n:
+ Nu (n<10) th Tng bng n;
+ Nu (n<10) th Tng bng n%10 + Tng cc ch s ca n/10
int tong(int n)
{
if (n<10)
return n;
else
return n%10+tong(n/10);
}
61
Gii mt s bi tp quy
Bi
void XuatSoNguoc(int n)
{
if (n<10)
cout<<n;
else {
cout<<n%10;
XuatSoNguoc(n/10);
}
}
62
Gii mt s bi tp quy
Bi
63
Gii mt s bi tp quy
Bi
64
Gii mt s bi tp quy
Bi
65