DOUG LLOYD: Siz g枚rd眉m varsa recursion video,
B眉t眉n proses ola bil蓹r bir az sehrli g枚r眉n眉rd眉.
Bu nec蓹 i艧l蓹yir?
Funksiyalar谋 nec蓹 bilirik ki, onlar g枚zl蓹yin v蓹 ba艧qa d蓹y蓹r g枚zl蓹m蓹k laz谋md谋r
f蓹rqli bir funksiyas谋 qay谋tmaq 眉莽眉n ist蓹diyimiz n蓹tic蓹ni 蓹ld蓹 etm蓹k 眉莽眉n z蓹ng?
>> B蓹li, bu i艧l蓹ri s蓹b蓹bi var z蓹ng y谋臒谋n谋 kimi tan谋nan bir 艧ey.
Bir funksiyas谋 z蓹ng zaman, Sistem yadda艧谋nda yer k蓹nara qoyur
ki, funksiyas谋 眉莽眉n i艧 眉莽眉n.
V蓹 biz yadda艧 bu chunks z蓹ng ki, h蓹r funksiyas谋 眉莽眉n k蓹nara edilir
y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 v蓹 ya bir funksiyas谋 莽蓹r莽iv蓹sind蓹 z蓹ng.
V蓹 g枚zl蓹y蓹 bil蓹r kimi, bu y谋臒谋n谋 莽蓹r莽iv蓹sind蓹
yadda艧 y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 ya艧ay谋r.
>> Daha 莽ox funksiya y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 bir zamanda yadda艧 m枚vcud ola bil蓹r.
茝sas funksiyas谋 h蓹r蓹k蓹t 莽a臒谋r谋r, v蓹 h蓹r蓹k蓹t istiqam蓹tind蓹 z蓹ngl蓹r,
眉莽 funksiyalar谋 a莽谋q 莽蓹r莽iv蓹l蓹ri var.
Lakin onlar f蓹al 莽蓹r莽iv蓹sind蓹 b眉t眉n var.
Bu 莽蓹r莽iv蓹sind蓹 bir y谋臒谋n t蓹艧kil edilir.
V蓹 莽蓹r莽iv蓹 蓹n son adl谋
funksiyas谋 y谋臒谋n谋 眉st h蓹mi艧蓹.
V蓹 h蓹mi艧蓹 f蓹al m眉nasib蓹t deyil.
Yaln谋z h蓹qiq蓹t蓹n he莽 bir var bir zamanda aktiv f蓹aliyy蓹t g枚st蓹rir.
Bu y谋臒谋n谋 眉st biridir.
>> Bir funksiyas谋 ba艧qa 莽a臒谋r谋r funksiyas谋, bu c眉r fasil蓹 presleri.
Bu n枚v g枚zl蓹yir g枚zl蓹m蓹y蓹 edir.
V蓹 ba艧qa bir y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 s枚vq edir 眉st y谋臒谋n谋 眉z蓹rin蓹.
V蓹 f蓹al 莽蓹r莽iv蓹sind蓹 olur.
V蓹 莽蓹r莽iv蓹 d蓹rhal Bu g枚zl蓹m蓹k laz谋md谋r a艧a臒谋dak谋
yenid蓹n aktiv 莽蓹r莽iv蓹sind蓹 q蓹d蓹r Bu 枚z i艧ini davam ed蓹 bil蓹rsiniz 蓹vv蓹l.
Bir funksiyas谋 tam v蓹 bunu,
onun 莽蓹r莽iv蓹sind蓹 y谋臒谋n谋 off atd谋 olunur.
Ki, terminologiya var.
V蓹 莽蓹r莽iv蓹 d蓹rhal a艧a臒谋dak谋, m蓹n yaln谋z dediyim kimi,
Yeni aktiv 莽蓹r莽iv蓹sind蓹 olur.
>> V蓹 ba艧qa bir funksiyas谋 莽a臒谋r谋r 蓹g蓹r, yenid蓹n fasil蓹 olacaq.
Bu yeni funksiyas谋n谋n y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 olacaq y谋臒谋n谋 眉st 眉z蓹rind蓹 s枚vq edil蓹c蓹k.
Onun i艧 ed蓹c蓹yik.
Bu off geri pop bil蓹r.
V蓹 dig蓹r funksiyas谋 A艧a臒谋dak谋 yenid蓹n davam ed蓹 bil蓹rsiniz.
>> Bel蓹 ki, axtar谋r, yen蓹 bu yolu ged蓹k fakt枚ryel funksiyas谋 fikir
biz m眉蓹yy蓹n ki, recursion video g枚rm蓹k 眉莽眉n
d蓹qiq nec蓹 bu arxas谋nda sehrli recursive prosesi ya艧an谋r.
Bel蓹 ki, bu bizim b眉t眉n fayl, sa臒 var?
Biz iki m眉蓹yy蓹n 蓹sas v蓹 fakt funksiyalar谋.
V蓹 biz g枚zl蓹y蓹 bil蓹r kimi, H蓹r hans谋 bir C proqram gedir
蓹sas ilk x蓹tti ba艧lamaq 眉莽眉n.
>> Bel蓹 ki, biz 蓹sas 眉莽眉n yeni y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 yarad谋r.
V蓹 bu yay谋nlanmaya ba艧lamas谋 olacaq.
Main z蓹ngl蓹r printf.
V蓹 printf gedir 5 fakt枚ryel 莽ap.
B蓹li, bu bilmir 5 n蓹 fakt枚ryel edir
v蓹 bu 莽a臒谋r谋艧 art谋q ba艧qa funksiyas谋 z蓹ng as谋l谋 olaraq.
Bel蓹 ki, 蓹sas orada fasil蓹 gedir.
M蓹n t蓹rk m媒 Ben onun , orada r蓹ng arrow
Bu kimi eyni r蓹ng sa臒 莽蓹r莽iv蓹sind蓹 d蓹st蓹,
茝sas dondurmaq gedir g枚st蓹rir ki, 5 fakt枚ryel adlan谋r burada is蓹.
>> Bel蓹 ki, 5 fakt枚ryel adlan谋r.
V蓹 bu 莽ox da ba艧layacaq olacaq fakt枚ryel funksiyas谋 ba艧layan.
Bu sual I 1 b蓹rab蓹r edir蓹m soru艧ur?
1 b蓹rab蓹r 5?
Yox, yax艧谋.
Bel蓹 ki, a艧a臒谋 getm蓹k olacaq ba艧qa hiss蓹si qaytar谋lmas谋 n d蓹f蓹
n minus 1 fakt枚ryel.
OK, yax艧谋.
>> Bel蓹 ki, indi 5 fakt枚ryel edir Ba艧qa bir z蓹ng as谋l谋 olaraq
ke莽蓹n fakt枚ryel 眉莽眉n parametr kimi 4.
V蓹 bel蓹 Faktorial 5 frame, q谋rm谋z谋 莽蓹r莽iv蓹 ki,
orada dondurmaq niyy蓹tind蓹dir ki, x蓹tt m蓹n qeyd etdik
v蓹 ba艧a 莽atd谋rmaq 眉莽眉n 4 fakt枚ryel g枚zl蓹yin sonra ki, bunu etm蓹k laz谋md谋r n蓹
aktiv nizama yenid蓹n ola bil蓹r.
>> Bel蓹 ki, 4 ba艧lay谋r fakt枚ryel fakt枚ryel ba艧lan臒谋c谋.
1 b蓹rab蓹r 4?
Xeyr, bel蓹 ki, eyni 艧ey olacaq.
Ba艧qa filial谋 a艧a臒谋 getm蓹k olacaq.
Bu kodu ki, x蓹tti almaq olacaq.
OK, M蓹n d枚rd d蓹f蓹 qay谋tmaq 眉莽眉n gedir蓹m.
Oh, 3 ed蓹c蓹yik fakt枚ryel bel蓹 fakt枚ryel 4 3 ba艧a Faktorial as谋l谋d谋r.
>> V蓹 bel蓹 ki, 3 fakt枚ryel z蓹ng etm蓹k laz谋md谋r.
V蓹 m媒 ke莽m蓹k oldu yen蓹 eyni proses.
Bu vasit蓹sil蓹 ba艧lay谋r burada olur.
3 fakt枚ryel as谋l谋d谋r 1 fakt枚ryel edir.
2 ba艧lay谋r, bel蓹 ki, fakt枚ryel, burada olur.
Bu 1 Faktorial as谋l谋d谋r.
1 ba艧lay谋r fakt枚ryel.
>> OLDU.
Bel蓹 ki, indi biz 蓹ld蓹 edirik haradasa maraql谋, sa臒?
Bel蓹 ki, indi 1 1 b蓹rab蓹rdir.
V蓹 biz 1 qay谋tmaq.
Bu n枚qt蓹d蓹, biz qay谋daca臒谋q.
funksiyas谋 h蓹yata.
Bu davran谋艧 var is-- bunu etm蓹k 眉莽眉n ba艧qa he莽 bir 艧ey,
v蓹 bel蓹 y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 眉莽眉n 1 fakt枚ryel off pops.
O ba艧a.
Bu 1 d枚nd眉.
陌ndi, 2 fakt枚ryel olan 莽蓹r莽iv蓹sind蓹 a艧a臒谋dak谋 d蓹rhal idi
y谋臒谋n谋, f蓹al 莽蓹r莽iv蓹sind蓹 olur.
>> V蓹 ala bil蓹rsiniz m蓹hz bu off sol harada.
Bu fakt枚ryel g枚zl蓹yir edilmi艧dir 1 枚z i艧ini ba艧a 莽atd谋rmaq 眉莽眉n.
陌ndi ba艧a 莽at谋b.
V蓹 bel蓹 ki, burada biz.
>> 1 fakt枚ryel 1 d蓹y蓹ri d枚nd眉.
2 can bel蓹 fakt枚ryel dem蓹k 2 d蓹f蓹 1 qay谋tmaq.
Onun i艧 indi edilir.
Bu fakt枚ryel 眉莽眉n 2 d枚nd眉 oldu 3, bunun 眉莽眉n g枚zl蓹yirdi olan.
3 fakt枚ryel indi top 莽蓹r莽iv蓹sind蓹, y谋臒谋n谋 f蓹al 莽蓹r莽iv蓹sind蓹.
V蓹 bel蓹 ki, OK, yax艧谋, m蓹n gedir蓹m deyir 6 3 d蓹f蓹 2, qay谋tmaq 眉莽眉n.
M蓹n verm蓹k gedir蓹m fakt枚ryel geri qiym蓹tl蓹ndiririk
4, m蓹ni g枚zl蓹yir edilmi艧dir.
Men etdim.
3 fakt枚ryel y谋臒谋n谋 off pops, v蓹 4 fakt枚ryel indi aktiv m眉nasib蓹t deyil.
>> 4 OK, m蓹n 4 d蓹f蓹 qay谋tmaq 眉莽眉n gedir蓹m deyir alt谋 oldu 3 fakt枚ryel.
Ki, d蓹y蓹ri idi ki, 3 fakt枚ryel d枚nd眉.
V蓹 bel蓹 4 d蓹f蓹 6 24.
M蓹n ke莽m蓹k 眉莽眉n gedir蓹m ki, geri fakt枚ryel 眉莽眉n
5, m蓹ni g枚zl蓹yir edilmi艧dir.
5 fakt枚ryel indi aktiv m眉nasib蓹t deyil.
5 d蓹f蓹 geri olacaq 4-- 5 d蓹f蓹 24, v蓹 ya 120-- fakt枚ryel
ki, d蓹y蓹ri verm蓹k geri olan, 蓹sas
bir 莽ox s蓹birl蓹 g枚zl蓹yir y谋臒谋n谋 alt谋nda uzun m眉dd蓹t.
>> Bu a莽谋lm谋艧 harada var.
Bu 莽a臒谋r谋艧 etdi.
Bir ne莽蓹 莽蓹r莽iv蓹sind蓹 眉st g枚t眉rd眉.
陌ndi geri y谋臒谋n谋 眉st edir.
Aktiv frame var.
Bel蓹 ki, 蓹sas d蓹y蓹r var 120 geri 5 Faktorial olan.
Bu g枚zl蓹yir edilmi艧dir ki, d蓹y蓹ri 莽ap.
V蓹 sonra bunu edir.
茝sas kodu daha x蓹tl蓹ri he莽 bir var.
Bel蓹 ki, 蓹sas 莽蓹r莽iv蓹sind蓹 off pops y谋臒谋n谋, v蓹 biz tamamlay谋n.
>> Recursion nec蓹 ki, var.
Ki y谋臒谋n谋 莽蓹r莽iv蓹sind蓹 nec蓹 var.
H蓹min funksiyas谋 z蓹ngl蓹r ki, 蓹vv蓹ll蓹r ba艧
yaln谋z fasil蓹 var g枚zl蓹yir sonrak谋 z蓹ngl蓹r 眉莽眉n
bel蓹 ki, onlar f蓹al ola bil蓹r ba艧a 莽atd谋rmaq 眉莽眉n nizama v蓹 onlar n蓹 etm蓹k laz谋md谋r n蓹 ba艧a.
>> M蓹n Doug Lloyd edir蓹m.
Bu CS50 edir.