You are on page 1of 4

qui

Bach khoa toan th m Wikipedia


(i hng t quy)
Bc ti: menu, tim kim
Tam giac Sierpinski
quy (ting Anh: recursion) la mt phong phap dung trong cac chong trinh may tinh
trong o co mt ham tu goi.
Mc lc
|n|
1 Khai nim hinh thuc v quy
2 inh nghia theo quy
3 quy trong khoa hoc may tinh
4 Chong trinh con qui
o 4.1 Cu truc chinh
o 4.2 Qui trinh thuc hin
o 4.3 qui h tong
5 Xem thm
[sa] Khi nim hnh thc v quy
Trong toan hoc va khoa hoc may tinh, cac tinh cht (hoc cu truc) oc goi la quy
nu trong o mt lp cac i tong hoc phong phap oc xac inh bng vic xac inh
mt s rt it cac trong hop hoc phong phap on gian (thng thong chi mt) va sau
o xac inh quy tc a cac trong hop phuc tap v cac trong hop on gian.
Chng han, inh nghia sau la inh nghia quy cua t tin:
B me cua mt ngoi la t tin cua ngoi y (trong hop co ban);
B me cua t tin mt ngoi bt ky la t tin cua ngoi y (bc quy).
Cac inh nghia kiu nh vy cung thong thy trong toan hoc.
[sa] nh ngha the quy
Mt khai nim X oc inh nghia theo quy nu trong inh nghia X co su dung ngay
chinh khai nim X.
Vi du 1: inh nghia s tu nhin
- 0 la mt s tu nhin.
- n la s tu nhin nu n - 1 la s tu nhin.
Vi du 2: inh nghia Ham giai tha n!
- 0! 1
- Nu n ~ 0 thi n! n(n - 1)!
[sa] quy t!ng "ha h#c my t$nh
Bi chi tit: Gii thut quy
Co mt phong phap chung giai cac bai toan la chia bai toan thanh cac bai toan con
on gian hon cung loai. Phong phap nay oc goi la k thut lp trinh chia tri. Chinh
no la chia khoa thit k nhiu giai thut quan trong, la co s cua quy hoach ng.
Mt vi du c in cua quy la ham giai tha cho bng gia m trong C hoc C sau
y:
function factorial(n)
{
if (n <= 1)
return 1;
else
return n * factorial(n-1);
}
Mt vi du khac cua giai thut quy la thu tuc duyt(nghia la thuc hin mt cng vic
nao o vi chung) tt ca cac nut cua mt cu truc du liu cy:
procedure ProcessTree(node)
{
ProcessNode(node); // thc hin !"t thu#t to$n ri%n& '(i n)t *+u
for each child,node of node do ProcessTree(child,node);
}
duyt mt cy, goi thu tuc nay vi nut gc cua cy nh mt tham bin khi tao. Tip
theo, thu tuc goi quy n chinh no cho tt ca cac nut con cua nut va goi (nghia la cac
cy con cua cy va goi), cho n khi gp trong hop co ban nghia la nut khng co con
(thong goi la "la").
Chinh cu truc cy cung oc inh nghia bng quy nh sau:
struct node
{
child,nodes - list<node.;
///
}
struct tree
{
root - node;
///
}
Cy oc biu din bng mt nut gc va danh sach cac nut con cua nut y. Mi nut con
lai co danh sach cac nut con cua no (va nh vy, no la gc cua mt cy con). "La" vi
danh sach rng cac nut con la trong hop co s cua nut.
[sa] %h&'ng t!nh cn qui
Trong lp trinh, co khai nim: mt chong trinh con (ham, thu tuc) oc goi la qui nu
trong qua trinh thuc hin no co phn phai goi n chinh no.
[sa] %(u t!)c ch$nh
Mt chong trinh con qui cn ban gm hai phn.
Phn co s: chua cac tac ng cua ham hoc thu tuc vi mt s gia tri cu th ban
u cua tham s.
Phn qui: inh nghia tac ng cn oc thuc hin cho gia tri hin thoi cua cac
tham s bng cac tac ng oc inh nghia trc y vi kich thc tham s
nho hon.
Vi du: Ham tinh giai tha cua n (tinh n!) (oan m sau oc vit bng ngn ngu Pascal)
function &t(n- 0ord)- 1on&int;
2e&in
if n = 1 then
&t -= 1
else
&t -= n * &t(n - 1);
end;
[sa] *ui t!nh th+c hin
Trong vi du trn, qui trinh thuc hin nh sau:
Khi co lnh goi ham, chng han:
3 -= &t(4);
thi may s ghi nh la:
&t(4) -= 4 * &t(5); '6 *i t7nh &t(5)
k tip may lai ghi nh:
&t(5) -= 5 * &t(1); '6 *i t7nh &t(1)
Theo inh nghia cua ham thi:
&t(1) -= 1;
May s quay ngoc lai:
&t(5) -= 5 * 1; cho 89t :u; l6 5
Tip tuc:
&t(4) -= 4 * 5; cho 89t :u; l6 <
Nh vy kt qua cui cung tra v la 6. Ta co: 3! 6.
[sa] qui h, t&'ng
Nu co hai chong trinh con B1 va B2 goi ln nhau ta s co mt su qui h tong

You might also like