ƯƠ
Ứ
NG TH C
CH
NG 4.
ƯƠ PH (Method)
Ầ
TR N MINH THÁI Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn
1
1
ấ
ươ
C u trúc ch
ng trình
2
Khai báo thư viện Khai báo hằng số …
Khai báo
Cài đặt những phương thức
Phương thức
N Ả B
Ơ C H N Ì R T G N Ơ Ư H C
Gọi thực hiện các phương thức theo yêu cầu của bài toán
Main()
Ví dụ
ươ
ng n,
ậ ố
ố Xét ch ố in ra màn hình các s nguyên t
ươ ng trình nh p vào s nguyên d ỏ ơ nh h n n
Ví d : ụ ậ
Nh p n = 10 ả
ế
K t qu in ra màn hình là: 2, 3, 5, 7
3
static void Main(string []args) {
int n;
Console.Write("Nhap so nguyen duong: “);
n = int.Parse(Console.ReadLine());
Console.WriteLine("Cac so nguyen to nho hon n la:“);
for(int so=2; so 4 int d=0;
for(int i=1; i<=so; i++)
{ ể if(so%i==0)
d++; }
if(d==2) Console.Write(so + " "); } } Ki m tra xem
ố so có ph i ả
ố
là s nguyên t ? static void Main(string []args) { int n; 5 Console.WriteLine("Cac so nguyen to nho hon n la:“); for(int so=2; so { ậ ố ươ Nh p s nguyên d ng n ả ố ố ế ố
không? N u là s } } ố ể
Ki m tra xem
thì in
nguyên t so có ph i là s nguyên t
so ra màn hình static void NhapSoNguyen(out int n) { 6 Console.Write("Nhap so nguyen duong: “); n = int.Parse(Console.ReadLine()); } Tham số static bool LaSNT(int k) { Tên hàm int d=0; for(int i=1; i<=k; i++) { if(k%i==0) d++; } return d==2; } static void Main(string []args)
{ 7 int n;
NhapSoNguyen(out n); G i hàmọ ố ố ề
Truy n đ i s Console.WriteLine("Cac so nguyen to nho hon n la:“);
for(int so=2; so Console.Write(so + " “); G i hàmọ } } ố ố ề
Truy n đ i s 8 ̀ ̀ ̀ ươ ứ ươ ự ̣ ̣ ̣ ̣ ̣ ̣ ̣ ̣ Ph ng th c (ha m) la môt đoan ch ng tri nh đôc lâp th c hiên tron ven môt ́ ̀ ́ ả ươ ứ ̣ ̣ ̉ ̣ ế
và tra vê k t qu cho ph ng th c goi no công viêc nhâ t đinh ử ụ ươ Khi nào s d ng ph ứ
ng th c? Khi co môt công viêc giô ng nhau câ n th c hiên ́ ́ ̀ ự ̣ ở ̣ ̣ ̣ ́
̀
nhiê u vi tri Khi câ n chia nh ch 8 ̀ ̃ ỏ ươ ̉ ̉ ̀
ng tri nh đê dê quan lý ẫ ổ ủ ươ M u t ng quát c a ph ứ
ng th c ́ ạ ươ ứ ạ Ph m vi ị ươ ứ ượ ọ ử ụ ạ
Xác đ nh ph m vi hay cách ph ng th c đ c g i (s d ng) ừ ạ Các t khoá ph m vi : private, public, static ủ ươ ứ ầ ồ KDL c a ph ạ
ng th c (đ u ra), g m 2 lo i ả ề ị
void: Không tr v giá tr ể ấ ả ề ị ươ ứ
ng ng ả ử float / int / long / string / ki u c u trúc / … : Tr v giá tr có KDL t
ớ ế
v i k t qu x lý ướ ứ ả c sao cho ph n ánh đúng ch c năng ươ ươ
ứ
Tên ph
ệ ủ
ự
th c hi n c a ph ặ
ng th c : Đ t tên theo qui
ứ
ng th c ầ ươ ườ ủ ể ầ ợ ả ầ ộ ố
ứ
ng th c (trong m t s
ế
ứ ế
ng th c n u k t qu đ u ra ề ọ ị ủ
ố ế
Danh sách các tham s (n u có) : đ u vào c a ph
ươ
ầ
ng h p có th là đ u vào và đ u ra c a ph
tr
ế
ố
có nhi u giá tr Tham s này g i là tham chi u) ử ụ ế ầ ố Khi hàm x lý bi n toàn c c thì không c n tham s ế
ạ
Nên h n ch
dùng static int a, b;
static void Nhap()
{ Console.Write("Nhap a: ");
a = int.Parse(Console.ReadLine());
Console.Write("Nhap b: ");
b = int.Parse(Console.ReadLine());
}
static void Xuat()
{
Console.WriteLine("a = {0}; b = {1}", a, b);
}
static void Main(string[] args)
{
Nhap();
Xuat();
} ́ ́ ươ ứ static void TênPh ́
ngTh c([danh sa ch ca c tham sô ]) { ́ ́ ́
Khai ba o ca c biê n cuc bô ́ ́ ́ ̀
ơ ươ ứ ̣ ̣ Ca c câu lênh hay l i goi đê n ph ng th c kha c. } ươ ố ố ngTh c G i: ọ TênPh ứ (danh sách tên các đ i s ); ̀ ̃ ươ ứ ươ ư ơ ̣ ̣ ̃
ư
Nh ng ph ng th c loai na y th ̀
̀
ng r i va o nh ng ́ ́ ́ ́ ̃
ư ́
ư ̣ ́
nho m ch c năng: Nhâp / xuâ t d liêu, thô ng kê, să p xê p, ̣ ̣ liêt kê ̣ ̀ ươ ng tri nh nhâp sô nguyên d ng n va in ̀ ươ ̣ ̀
́
ươ
Viê t ch
́
̀
ra ma n hi nh ca c ́
́
́
c sô cua n ́ ̉ ố
Input: s nguyên d ́ ́ ̣ ả ề ủ ́
ươ
ng (Xa c đinh tham sô )
́
ươ
c sô cua n (Xa c đinh KDL
ứ
ng th c)
ầ ả ề ́
Output: In ra ca c
ươ
tr v c a ph
Xu t ấ Không c n tr v giá tr ị KDL la ̀ ̀ ươ ̉ ̣ Xa c đinh tên ph ứ
ng th c: Ph ứ
ng th c na y void.
́
̀ ́ ươ
́ ̣ ̀
du ng in ra ca c US cua n nên co thê đăt la
LietKeUocSo static void LietKeUocSo(uint n) ̉ ̉ ̣ static void LietKeUocSo(uint n)
{ for (int i = 1; i <= n; i++) if (n % i == 0)
Console.Write("{0}\t", i); }
static void Main(string[] args)
{ uint n;
Console.Write("Nhap so nguyen duong n: ");
n=uint.Parse(Console.ReadLine());
Console.Write("Cac uoc so cua {0}: ", n);
LietKeUocSo(n);
Console.ReadLine(); } ươ ứ static ngTh c([tham sô ])́ { ́ ́ ́
Khai ba o ca c biê n cuc bô ́ ́ ơ ươ ứ ̣ ̣ Ca c câu lênh hay l ̀
i goi đê n ph ng th c kha c.́ return kq; }
G i: ọ ế ươ ố ố ứ ngTh c(tên các đ i s ); ữ ươ ườ ứ ơ ng r i vào các nhóm: ng th c này th
ế ế ể Nh ng ph
ổ
Tính t ng, tích, trung bình, đ m, ki m tra, tìm ki m ̣ ̣ ̀
ng n va ̣ ́
n n ̀
ng tri nh nhâp sô nguyên d
321 ; ươ
0 ́
ươ
Viê t ch
Sn
́
ti nh ́ (cid:0) (cid:0) (cid:0) (cid:0) (cid:0) (cid:0) ố
Input: s nguyên d ́
ng n (Xa c đinh tham sô ) ả ề ủ ̣ ươ
́
Output: Tông S (Xa c đinh KDL tr v c a ứ ươ ̣ ổ ̉ ̣ ̀ ươ ̉ ̃
̀ ̀ ̉ ́
ng ph
ng th c)
́
̀
Tra vê gia tri t ng (S).
̀
́
S la tông ca c sô nguyên d
ng nên S cu ng la
̀
ươ Kiêu tra vê cua ha m la
́
sô nguyên d
ulong.
́ ́ ̀ ứ ̉ ̉ ̉ ngTh c: Du ng ti nh tông S ̣ ̉ ươ
TongS Xa c đinh TênPh
̀
́
nên co thê đăt la static ulong TongS(uint n) ̉ ̣ static ulong TongS(uint n)
{ ulong kq = 0; for (uint i = 1; i <= n; i++) kq + = i; return kq; }
static void Main(string[] args)
{ ulong S;
uint n; Console.Write("Nhap vao so nguyen n: ");
n = uint.Parse(Console.ReadLine());
S = TongS(n);
Console.Write("Tong tu 1 den n: " + S);
Console.ReadLine(); } ̀ ̀ ̀ ́ ươ ́
§ Viê t ch ́
ng tri nh ti nh diên ti ch va chu vi hi nh tro n.̀ ́ ̀ ́ ̀ ự ̣ ́
§ Nhâp va o 3 sô th c a, b, c va kiêm tra xem chu ng co ́ ̀ ́ ̣ ̉ lâp tha nh 3 canh cua môt tam gia c hay không? Nê u ̃ ́ ̀ ̃ ́ ̀ ̀
ươ ̣ ̣ ̉ ̣ ́
co ha y ti nh diên ti ch, chiê u da i mô i đ ng cao ̀ ́ ́ ̀ ̀ ̣ cua tam gia c va in kê t qua ra ma n hi nh. Diện tích tam giác: s = sqrt(p*(p-a)*(p-b)*(p-c) ) với p là nửa chu vi của tam giác Tính các đường cao: ha = 2s/a, hb=2s/b, hc=2s/c. ̉ ̉ § Viết chương trình nhập 2 số nguyên dương a, b. Tìm USCLN & BSCNN. § Viết chương trình nhập số nguyên dương n, tính tổng các ước số của n. Ví dụ: Nhập n=6 Tổng các ước số từ 1 đến n: 1+2+3+6=12. § Nhập vào giờ, phút, giây. Kiểm tra xem giờ, phút, giây đó có hợp lệ hay không? 21 ạ ố
Ph m vi kh i ạ Ph m vi hàm ạ ậ Ph m vi t p tin ạ ươ Ph m vi ch ng trình 22 ố ượ ớ ạ ặ ở ộ
M t kh i đ c gi i h n b i ngo c {}. ạ ộ ế ạ ố ố ỉ Bi n khai báo trong kh i đó có ph m vi kh i, nghĩa là nó ch ho t đ ng trong ố ọ ế ưọ ạ
kh i đó mà thôi. Ph m vi này còn g i là ọ
c g i là c c bụ ộ, và bi n đ bi n ế c c bụ ộ. 23 static void Main(string args[])
{ int i=20;
{ int i=10;
Console.WriteLine("Gia tri i ben trong khoi: “ + i); }
Console.WriteLine("Gia tri i ben ngoai khoi: « + i); } ả K t quế
Gia tri i ben trong khoi: 10
Gia tri i ben ngoai khoi: 20 24 ừ ầ ế ố ỉ ộ
đ u đ n cu i m t hàm, ch có tác ạ ộ
Ho t đ ng t
ụ
d ng trong hàm static void Main(string []args)
{ int k;
float m;
double x;
ệ
//Các l nh khác
//… } 25 static int x = 0;
static int y = 0;
static float z = 0.0;
static void Main()
{
int i;
//Các l nhệ
.
.
} ế ượ ụ ừ Bi n đ c khai báo toàn c c và có kèm t khóa static ượ int a, b;
static void Nhap()
{ Console.Write("Nhap a: “);
a = int.Parse(Console.ReadLine());
Console.Write("Nhap b: “);
b = int.Parse(Console.ReadLine()); }
static void Main(string []args)
{ ươ Đ c khai báo bên
c ượ
ngoài hàm – còn đ
ụ
ế
ọ
g i là bi n toàn c c
Không nên khai báo s ử
ế
ề
ụ
d ng nhi u n u không
ế
ự ự ầ
t, vì nó
th c s c n thi
ạ
ở
ẽ
s gây tr ng i cho
i khi
quá trình dò tìm l
debug ch ỗ
ng trình int c;
Nhap();
c = a + b;
Console.WriteLine("Tong = “+c); } ả ử ố ư ủ ế ườ ườ ậ ợ Tham s l u k t qu x lý c a hàm: out (th ng dùng cho tr ng h p nh p ế ề ả ị
ữ ệ
d li u, k t qu hàm có nhi u giá tr ) ố ừ ầ ầ Tham s v a làm đ u vào và đ u ra: ref Dùng t ừ ướ ủ ố ướ ố khóa ref ho c ặ out tr c KDL c a khai báo tham s và tr c tên đ i ọ ươ ứ ố
s khi g i ph ng th c. ừ ố ố ướ ắ ầ ả ở ộ ị ề Dùng t khóa c khi truy n vào ref b t bu c ph i kh i gán giá tr ban đ u cho đ i s tr ươ ứ ế ầ ế ọ
khi g i ph ng th c (N u dùng t) out thì không c n thi ố ị ướ Hoán v 2 s nguyên a, b cho tr c ả ế ươ ớ ế
Đánh giá k t qu khi vi t ch ng trình v i hai ườ tr ợ
ng h p sau ườ ợ 1. Tr ế
ng h p không dùng tham chi u ườ ợ 2. Tr ng h p dùng tham chi u: ế ref static void HoanVi(int a, int b) { int tam = a; a = b; b = tam; Console.WriteLine("Trong HoanVi: a = " + a + ";b = " + b); } static void Main(string[] args) { int a = 5, b = 21; Console.WriteLine("Truoc HoanVi: a = {0}; b = {1}", a, b); HoanVi(a, b); Console.WriteLine("Sau HoanVi: a = " + a + ";b = " + b); } { int tam = a; a = b; b = tam; Console.WriteLine("Trong HoanVi: a = " + a + "; b = " + b); } static void Main(string[] args) { int a = 5, b = 21; Console.WriteLine("Truoc HoanVi: a = {0}; b = {1}", a, b); HoanVi(ref a, ref b); Console.WriteLine("Sau HoanVi: a = " + a + ";b = " + b); } static void Nhap(out int a, out int b) {
Console.Write("Nhap a: ");
a = int.Parse(Console.ReadLine());
Console.Write("Nhap b: ");
b = int.Parse(Console.ReadLine());
} static int Tong(int a, int b) {
return a + b;
}
static void Main(string[] args)
{
int a, b;
Nhap(out a, out b);
s=Tinh(a, b);
ầ
Console.WriteLine(“{0}+{1}={2}”, a, b, s); } Tr n Minh Thái 33 ả ề ủ ế KDL tr v c a hàm ị ữ ầ ả ủ
K t qu c a hàm?
Hàm làm gì? Xác đ nh tên hàm
C n nh ng thông tin gì? Tham số ị ị Ứ ỗ ng v i m i thông tin đã xác đ nh, xác đ nh ị ướ ư ớ
xem đã có giá tr tr c khi vào hàm ch a, ế N u ch a có ư Tham chi uế ế ự ệ ẫ v n không thay đ i ế ổ ị N u có mà sau khi th c hi n xong hàm
ổ Tham trị
ệ
ự
N u có mà sau khi th c hi n xong hàm thì
ị
giá tr cũng b thay đ i theo Tham chi uế 34 ̀ ́ ́ ̀ ̀ ̀ ̣ ̉ ́ ̀ ́ ươ ̣ ̣ ̀
́
ơ
̀
ba n phi m.
́
̀
́ ̀ ́ ̣ ̀
ư
c nhâp t ́
ươ
1.Viê t ch
ng tri nh ti nh diên ti ch va chu vi cua
̀
̃
̀
ư
hi nh ch nhât v i chiê u da i va chiê u rông
̣ ư
ượ
c nhâp t
đ
́
2.Viê t ch
ng tri nh ti nh diên ti ch va chu vi
̀
́
̀
̀
ượ
ơ
hi nh tro n v i ba n ki nh đ
ba n
́
phi m. ̀ ́ ự ̣ ̀
́ ̀ ̣ ̉ ́
́ ́ ̃ ̣ ̣ ̉ ̣ ́
̀ ́ ̀ ̃ ̣ ́ ̀ ̉ ̀ ́ ́ 3.Nhâp va o 3 sô th c a, b, c va kiêm tra xem
̀
chu ng co tha nh lâp tha nh 3 canh cua môt tam
́
́
gia c hay không? Nê u co ha y ti nh diên ti ch,
̀
̀
ươ
chiê u da i mô i đ
ng cao cua tam gia c va in
̀
kê t qua ra ma n hi nh.
ươ ươ ̉ ng tri nh nhâp 2 sô nguyên d 4.Viê t ch ng a, ̀ ́ ̀ ̣ b. Ti m USCLN va BSCNN cua hai sô nguyên đó ̉ 35 ́ ươ ng n, ti nh ̀
ố ươ ̣ ươ
ng tri nh nhâp sô nguyên d
́
ươ
c s d ́
ủ
ng c a n. ̉ ́
5. Viê t ch
́
tông ca c
Vi dú ̣: Nhâp n=6
ổ ế T ng các 1 đ n n: 1+2+3+6=12. ướ ố ừ
c s t
́ ̣ ̀
̀
ơ
ơ
, phu t,
, phu t, giây. Kiêm tra xem gi
̀ ̀
́ ̀ ́ ̣ ̉ ́
6. Nhâp va o gi
́
ợ
giây đo co h p lê hay không? In kê t qua ra ma n hi nh. ̀ ́ ̣ ̉ ươ
ng tri nh nhâp sô nguyên d
́
́ ̀
̀ ́ ́ ư ́
ươ
ng n gô m k
7. Viê t ch
́
̃
̃
ư
ch sô , đê m xem n co bao nhiêu ch sô la sô
nguyên tô .́ ̣ ́ ̀ ́
8. Viê t ch ́
́ ̀ ̣ ̣ ̃
ư
́ ́ ́ ươ
ng tri nh ti nh tiê n thuê ma y dich vu
̀
̀
̀
́
ơ
ơ
bă t đâ u thuê
̀
́
ơ
kê t thu c thuê (GKT), sô ma y thuê ̀ ̃
ư ̣ ̣ ̀
́
ơ
la sô nguyên Gi ̀
Internet. V i d liêu nhâp va o la gi
36
(GBD), gi
(SoMay).
̀
Điê u kiên cho d liêu nhâp: 6<=GBD ). ̃ ́ ̃ ̀ ́ ơ ơ ươ ̀
ơ Đ n gia : 2500đ cho mô i gi ́
̀
ma y tr ́
c 17:30 va 3000đ cho mô i gi ma y sau 17:30. ̀ ươ ươ ́
9. Viê t ch ̀
̀ ̃ ̣ ̣ ̣ ̀
́
ng tri nh ti nh tiê n l
́
́
ươ
c gi ̀
ơ
va o ca, gi ng nga y cho công
̀
ơ
ra ca cua mô i nhân, cho biê t tr
ng i. ̀ươ ̃ ơ ờ ̉ ̉ Gia s ră ng:
́
̀
̀
ơ ươ
tr c 12 gi ̀
̀
: 6000đ va sau 12 gi : 7500đ. ́ ́ ̀ ̀ ́ ̀ ̃ ́ ̀ ơ ơ ̀
ơ ơ ờ ố là s nguyên). Gi ̀
va o ca s m nhâ t la 6 gi sa ng va gi ̀
ra ca trê nhâ t la 18 gi ̀
ơ (Gi 37 ̀ ́ ́ ́ ượ Môt ha m đ ̀ ̣ ̣ ̣ ́ ̀ ́ ̉ ̣ ̣ ̣ ̣ c goi co ti nh đê qui nê u
́
́
trong thân cua ha m đo co lênh goi lai
̀
́
ươ
chi nh no môt ca ch t
ng minh hay tiê m
ân. ̉ Phân loai đê qui ́ ́ ệ ̣ ̣ ̣ ̣ ̃ ươ ̣ Đ qui tuyê n ti nh.
Đê qui nhi phân.
Đê qui phi tuyê n.́
Đê qui hô t
ng. ̣ 38 ̀ ́ ̀
̣ ơ i goi ha m goi lai chi nh ̀
́ ̣ ̣ ̣ ́ ́ ̉ ư ̣ ́
́
Trong thân ha m co duy nhâ t môt l
̀
no ́
ươ
ng minh.
môt ca ch t
̀
̃
̀ ̀ ̣ ư if (điê u kiên d ng)
{ ́ ́ ́ ̀ ̣ . . .
//Tra vê gia tri hay kê t thu c công viêc ự ̉ ̣ ̣ ́ ố ́
́
́ ự ̣ ̣ ̣ }
́
́
//Th c hiên môt sô công viêc (nê u co )
. . . TenHam ( } ̣ ̣ ̣ 39 nS n 321)( ́
̣: Ti nh Vi dú
̀ ̣ ư ̀
Điê u kiên d ng: S(0) = 0. ́ ́ ́ ư Qui tă c (công th c) ti nh: S(n) = S(n1) + n. long TongS (int n) { if(n==0) return 0; return ( TongS(n1) + n ); } (cid:0) (cid:0) (cid:0) (cid:0) (cid:0) 40 ̣ ́ ́ ̀ ́ ̀ ́ ̀ ươ ̉ ̣ ̣ ̣ ̣ Trong thân cua ha m co hai l ng minh. ̀ ́ ́ ̉ ư ̣ ̃
{ ̀ ̀ ̣ ư if (điê u kiên d ng) { . . . ự ́ ́ ́ ̀ ̉ ̣ ̣ //Tra vê gia tri hay kê t thu c công viêc ́ ̀ ́ ́ ̉ ơ ố ̣ ̣ ̣ ự ̉ ́ ̀ ́ ́ ̀ ố ̣ ̣ ̣ ự ̉ ̣ }
́
́
́
//Th c hiên môt sô công viêc (nê u co )
́
. . .TenHam ( ̣ ̣ ̣ } f1 = f0 =1 ; ́ ́ ̃ ư ượ ư ̣ ̉ ̣ 41
́
Vi du: ́
̣ Ti nh sô hang th n cua da y Fibonaci đ ̃
c đinh nghi a nh sau: (n>1) fn = fn1 + fn2 ;
̀
̣ ư ̀ Điê u kiên d ng: f(0) = f(1) = 1. long Fibonaci (int n) { if(n==0 || n==1) return 1; return Fibonaci(n1) + Fibonaci(n2); } ̣ ̉ ̣ ̣ ̣ ̣ ̀ ́ ̣ TenHam ( ̉ ư
tham sô >)́ { for (int i = 1; i<=n; i++) ́ ự ̣ 42
Trong thân cua ha m co l
́
lai chi nh no đ
lăp.
̃
́
́
{ //Th c hiên môt sô công viêc (nê u co ) ̀ ̀ ̣ ư if (điê u kiên d ng) { . . . ́ ́ ̀ ́ ̣ ̣ ̣ //Tra vê gia tri hay kê t thu c công viêc̣ } else ́ ự ̉ ̣ { //Th c hiên môt sô công viêc ́ ́ (nê u co ) ́ ́ ố TenHam ( } } } ̣ ̣ ̣ ́ ̃ ́ ượ ư ̣ ̉ ̣ ́
Vi du: ́
ư
̣ Ti nh sô hang th n cua da y {Xn} đ ̃
c đinh nghi a nh sau: X0 =1 ;
43 Xn = n2X0 + (n1)2X1 + … + 12Xn1 ; (n≥1) ̀ ̀
̣ ư
Điê u kiên d ng:X(0) = 1. long TinhXn (int n) { if(n==0) return 1; long s = 0; for (int i=1; i<=n; i++) s = s + i * i * TinhXn(ni); return s; } 44 ̣ ̀ ơ ́ ̀ ̀ ̀
̀ ̀
ơ ̉ ̣ Trong thân cua ha m na y co l
trong thân cua ha m kia co l ̉ ̣ ́
̀
̀
i goi ha m đê n ha m kia va
̀
́
i ha m na y. g() f() f() g() f() h() ̀ ́ ́ ̉ ư ̃
TenHam2 ( ̣ ̀ ́ ́ ̉ ư ̃
TenHam1 ( ́ ự 45 ̣ ́ ́ ́ ự ̣ ̣ ̣ {
́
́
//Th c hiên môt sô công viêc (nê u co )
…TenHam2 ( } ̀ ́ ́ ̉ ư ̣ ̣ ̣ ̃
TenHam2 ( ́ ự ̣ ́ ́ ́ ự ̣ ̣ ̣ {
́
́
//Th c hiên môt sô công viêc (nê u co )
…TenHam1 ( } ̣ ̣ ̣ ́ ́ ̃ ̃ ́ ư ượ ̣ Ti nh sô hang th n cua hai da y {Xn}, {Yn} đ ư
c đinh nghi a nh ́
Vi du:
sau:
46
X0 =Y0 =1 ; Xn = Xn1 + Yn1; (n>0) Yn = n2Xn1 + Yn1; (n>0) ̀ ̀ ̣ ư Điê u kiên d ng: X(0) = Y(0) = 1. long TinhYn(int n); long TinhXn (int n) { if(n==0) return 1; return TinhXn(n1) + TinhYn(n1); } long TinhYn (int n) { if(n==0) return 1; return n*n*TinhXn(n1) + TinhYn(n1); } ̣ ̉ ̣ 47 Ví d tính n! v i n=5 GiaiThua(5) GiaiThua(4) GiaiThua(3) GiaiThua(1) main() 5n 4n 2n 5n 3n 1n 5
120 4
24 3
6 GiaiThua(2)
1
1 2
2 ụ ớKhái ni mệ
ươ
ứ
Ph
ng th c
ươ
ứ
Ph
ng th c
ươ
ứ
Ph
ng th c
ươ
ả ề
ứ
Ph
ị
ng th c không tr v giá tr
ươ
ả ề ế
ứ
ả
Ph
ng th c có tr v k t qu
ế
ậ
ị
ậ
Bài t p – Nh p giá tr các bi n trong
Main()
Bài t pậ
ủ
ự
ế
ầ
T m v c c a bi n
ạ
ố
Ph m vi kh i
ạ
ố
Ph m vi kh i (tt)
ạ
Ph m vi hàm
ạ
ậ
Ph m vi t p tin
ạ
ươ
Ph m vi ch
26
ng trình
ế
ố
Tham s là tham chi u
ế
ố
Tham s là tham chi u
Không dùng tham chi uế
Dùng tham chi uế
static void HoanVi(ref int a, ref int b)
ử ụ
ụ
ế
Ví d s d ng tham chi u out
ự
ắ
Nguyên t c xây d ng hàm
Bài t pậ
Bài t pậ
̀
̉ ử
Tiê n tra cho mô i gi
ớ
ệ
ệ
Gi
i thi u hàm đ qui
́
́
ệ
Đ qui tuyê n ti nh
ị
Đê qui nh phân
̀
ơ
i goi ha m goi lai chi nh no môt ca ch t
Đê qui phi tuyê ń
́
́
̀
̀
ượ
̀
̀
ơ
i goi ha m goi
c đăt bên trong vo ng
ỗ ươ
Đê qui h t
̀
ng
́
̀
ơ
i goi ha m t
ạ ộ
ệ
Cách ho t đ ng hàm đ qui
Q&A

