Professional Documents
Culture Documents
DeCuong KTLT chuongIII
DeCuong KTLT chuongIII
Trong ®ã:
- <KiÓu hµm>: lµ kiÓu gi¸ trÞ tr¶ vÒ cña hµm. NÕu
hµm kh«ng cã gi¸ trÞ tr¶ vÒ, ta dïng kiÓu void. Ng-
îc l¹i, ta thêng sö dông c¸c kiÓu chuÈn nh int, float,
double, char…
- <Tªn hµm>: do ngêi dïng tù ®Þnh nghÜa.
- [<kiÓu ®èi> <tªn ®èi>]: liÖt kª danh s¸ch c¸c ®èi
cña hµm vµ kiÓu d÷ liÖu cña ®èi (nÕu hµm cã ®èi).
VD1: hµm tÝnh n! ®îc viÕt theo 2 d¹ng: cã vµ kh«ng cã
C¸ch 1: Hµm cã gi¸ trÞ tr¶ C¸ch 2: Hµm kh«ng cã gi¸ trÞ
long GT(int n) vÒ void GT(int n) tr¶ vÒ
{ {
long kq=1; long kq=1;
for (int i=1; i<=n; i++) for (int i=1; i<=n; i++)
kq *=i; kq *=i;
return kq; cout<<kq;
} }
Mét vÊn ®Ò ®Æt ra lµ: khi nµo th× viÕt hµm díi d¹ng
cã gi¸ trÞ tr¶ vÒ, khi nµo th× viÕt hµm kh«ng cã gi¸ trÞ tr¶ vÒ?
Nãi chung, tuú thuéc vµo bµi to¸n cô thÓ ta cã thÓ quyÕt
®Þnh ®iÒu nµy, tuy nhiªn:
- NÕu ta chØ dïng hµm ®Ó thùc thi mét c«ng viÖc nµo
®ã mµ kÕt qu¶ cña nã chØ cÇn ®îc kÕt xuÊt ra mµn
h×nh lµ ®ñ th× hµm thêng ®îc viÕt díi d¹ng kh«ng cã
gi¸ trÞ tr¶ vÒ.
- NÕu kÕt qu¶ tr¶ vÒ cña hµm cã thÓ ®îc dïng trong
nh÷ng c«ng viÖc tiÕp theo (tøc ta cßn sö dông chóng
sau nµy) th× hµm thêng ®îc viÕt díi d¹ng cã gi¸ trÞ tr¶
vÒ.
b. C¸ch tæ chøc c¸c hµm
C¸ch 1: C¸c hµm ®Æt trong cïng mét tÖp víi hµm
main().
Ch¬ng tr×nh ngoµi hµm main() cßn cã c¸c hµm kh¸c th×
®îc viÕt theo cÊu tróc sau:
#include… #include…
…. ….
//C¸c hµm ®Æt ë ®©y //Nguyªn mÉu cña hµm ®Æt ë ®©y
… …
void main() void main()
{ {
Th©n hµm main; Th©n hµm main;
} }
//C¸c hµm ®Æt ë ®©y
hµm main()
Hµm ®Ö quy:
long GT(int n)
{
if (n==1)
return 1;
else
return GT(n-1) * n;
}
Thùc hiÖn: Gi¶ sö n =3. Khi ®ã, quy tr×nh thùc hiÖn nh
sau:
3! = 3 * 2!
2! = 1! * 2
1! = 1
- T¹o mét t¹o mét b¶n sao cña hµm, cÊp ph¸t c¸c vïng nhí
míi cho c¸c biÕn côc bé, thùc hiÖn b¶n sao nµy.
- LÊy ®Þa chØ cña dßng lÖnh gäi ®Ö quy vµ quay vÒ.
KÕt thóc
Nh vËy cã bao nhiªu lêi gäi hµm th× cã bÊy nhiªu lÇn kÕt
thóc hµm. Trong trêng hîp kh«ng tån t¹i mét b¶n sao cña hµm
mµ t¹i ®ã kh«ng thùc hiÖn hiÖn lêi gäi ®Ö quy th× qu¸ tr×nh
®Ö quy sÏ kh«ng dõng ®îc (ta gäi lµ ®Ö quy v« h¹n).
Biªn so¹n:
KÕtNguyÔn
thóc M¹nh Cêng 1
Trang Return 1*2 Return 1
Return 3
1*2*3
§Ò c¬ng chi tiÕt Kü
thuËt lËp tr×nh
if (suy biÕn)
C«ng thøc trong trêng hîp suy biÕn.
else
C«ng thøc trong trêng hîp tæng qu¸t.
Cn = ∑C C
i =1
i n −i
∑C C
i =1
i n −i
Bíc 2:
if (n = = 1)
return 1;
else
{ int C =0;
for (int i=1; i<n; i++)
C+= CataLan(i) * CataLan(n-i);
Return C;
}
Nh vËy, hµm ®Ö quy tÝnh sè CataLan thø n ®îc viÕt nh
sau:
int CataLan(int n)
{
if (n==1)
return 1;
else
{
int C=0;
for (int i=1; i<n; i++)
C+=CataLan(i)*CataLan(n-i);
return C;
}
}
Hµm ®Ö quy:
Bíc 1:
- Suy biÕn : b=0; c«ng thøc suy biÕn: USCLN(a, b) = b;
- Kh«ng suy biÕn: b kh¸c 0; c«ng thøc tæng qu¸t: USCLN
(a, b) = USCLN(b, a%b);
Bíc 2:
if (b==0)
return a;
else