ZAMYLA: Yo nan lòd yo konprann rkursyon, ou dwe premye konprann rkursyon. Èske w gen rkursyon nan pwogram konsepsyon vle di ke ou gen pwòp tèt ou-referansyèl definisyon. Estrikti done repetitif, pou egzanp, yo se done estrikti ki gen ladan yo tèt yo nan definisyon yo. Men, jodi a, nou ap ale nan konsantre sou fonksyon repetitif. Sonje byen, fonksyon pran entrain, agiman, epi retounen yon valè kòm yo pwodiksyon reprezante pa dyagram sa a isit la. Nou pral panse nan bwat la kòm kò a nan fonksyon an, ki gen yon seri enstriksyon ki entèprete la D 'epi yo bay yon pwodiksyon. Lè w ap pran yon gade pi pre andedan kò a nan fonksyon a ta ka revele rele nan zòrèy lòt fonksyon kòm byen. Pran fonksyon sa a ki senp, foo, ki pran yon fisèl sèl kòm opinyon ak simagri konbyen lèt ki fisèl te genyen an. Strlèn fonksyon an, pou fisèl longè, Yo rele, ki gen rannman ki obligatwa pou apèl la lè printf. Koulye a, sa ki fè yon fonksyon repetitif espesyal se ke li rele tèt li. Nou ka reprezante repetitif sa a rele ak flèch sa a zoranj loupin tounen nan tèt li. Men, egzekite tèt li ankò ap sèlman fè yon lòt apèl repetitif, ak yon lòt ak yon lòt. Men, fonksyon repetitif pa ka enfini. Yo gen nan fen yon jan kanmenm, oswa ou pwogram la ap kouri pou tout tan. Se konsa, nou bezwen jwenn yon fason yo kraze soti nan apèl yo repetitif. Nou rele ka sa a de baz la. Lè yo kondisyon an ka baz te rankontre, fonksyon an retounen san yo pa fè yon lòt apèl repetitif. Pran fonksyon sa a, hi, yon fonksyon anile ki pran yon n Int kòm opinyon. Ka a baz vini anvan. Si n gen mwens pase zewo, ekri ak lèt ​​detache babay ak retounen Pou tout lòt ka yo, nan fonksyon pral enprime hi ak egzekite rele nan repetitif. Yon lòt rele nan hi fonksyon an ak yon valè D 'dekremante. Koulye a, menm si nou ekri ak lèt ​​detache hi, nan fonksyon pa pral mete fen nan jiskaske nou retounen di ki kalite retounen li yo, nan sa a anile ka-a. Se konsa, pou chak n lòt pase ka a baz, sa a hi fonksyon ap retounen hi nan n mwens 1. Depi fonksyon sa a se anile menm si, nou pa pral klèman tape retounen isit la. Nou pral jis egzekite fonksyon an. Se konsa, lè w rele hi (3) pral enprime hi ak egzekite hi (2) ki ègzekutra hi (1) yon sèl ki ègzekutra hi (0), ki kote nan se kondisyon ka baz te rankontre. Se konsa, hi (0) simagri babay epi retounen. OK. Se konsa, kounye a ke nou konprann Basics yo nan fonksyon repetitif, yo ke yo bezwen omwen yon ka baz menm jan tou yon repetitif rele, se pou yo deplase sou yon plis enpòtan egzanp. Youn ki pa jis retounen anile pa gen pwoblèm sa. Se pou nou pran yon gade nan faktoryèl la operasyon itilize pi souvan nan pwobabilite kalkil. Faktoryèl nan n se pwodwi a nan chak nonm antye ki pozitif pi piti pase ak egal a n. Senk Se konsa, faktoryèl se 5 fwa 4 fwa 3 fwa 2 fwa 1 bay 120. Kat faktoryèl se 4 fwa 3 fwa 2 fwa 1 bay 24. Apre sa, règ la menm aplike nan nenpòt ki nonb antye ki pè pozitif. Se konsa, kouman ta ka nou ekri yon repetitif fonksyon ki kalkile faktoryèl la nan yon kantite? Bon, nou pral bezwen idantifye tou de la baz ka ak apèl la repetitif. Rele nan repetitif yo pral menm bagay la tou pou tout ka eksepte pou baz la ka, ki vle di ke nou pral gen jwenn yon modèl ki pral ban nou nou vle rezilta. Pou egzanp sa a, wè ki jan 5 faktoryèl enplike nan miltipliye 4 pa 3 pa 2 pa 1 Epi ki miltiplikasyon trè menm yo jwenn isit la, nan definisyon nan 4 faktoryèl. Se konsa, nou wè ke 5 faktoryèl se jis 5 fwa 4 faktoryèl. Koulye a, modèl sa a aplike a 4 faktoryèl kòm byen? Wi. Nou wè ke 4 faktoryèl gen nan miltiplikasyon 3 fwa 2 fwa 1, nan definisyon trè menm jan ak 3 faktoryèl. Se konsa, 4 faktoryèl ki egal a 4 fwa 3 faktoryèl, ak sou sa ak pou fè nou modèl baton jouk 1 faktoryèl, ki pa definisyon ki egal a 1. Gen nan pa gen lòt ki pozitif nonb antye relatif kite. Se konsa, nou gen modèl la pou repetitif rele nou an. n faktoryèl ki egal a fwa n faktoryèl la nan n mwens 1. Apre sa, ka baz nou an? Ki pral jis pou definisyon nou an nan 1 faktoryèl. Se konsa, kounye a nou kapab deplase sou ekri Kòd pou fonksyon an. Pou ka a baz, nou pral gen a kondisyon n egal egal 1, kote nou pral tounen 1. Lè sa a, k ap deplase sou apèl la repetitif, nou pral retounen fwa n nan faktoryèl nan n mwens 1. Koulye a, kite nan tès sa a nou an. Ann eseye faktoryèl 4. Pou chak fonksyon nou li nan egal a 4 fwa faktoryèl (3). Faktoryèl (3) ki egal a 3 fwa faktoryèl (2). Faktoryèl (2) ki egal a 2 fwa faktoryèl (1), ki retounen 1. Faktoryèl (2) kounye a retounen 2 fwa 1, 2. Faktoryèl (3) kapab kounye a retounen 3 fwa 2, 6. E finalman, faktoryèl (4) retounen 4 fwa, 6, 24. Si w ap rankontre nenpòt difikilte pou ak apèl la repetitif, pretann ke fonksyon an ap travay deja. Ki sa mwen vle di pa sa a se ke ou ta dwe mete konfyans apèl repetitif ou a retounen valè yo dwat. Pou egzanp, si mwen konnen ke faktoryèl (5) egal 5 fwa faktoryèl (4), mwen pral fè konfyans ki faktoryèl (4) ap ban m '24. Panse a li kòm yon varyab, si ou pral, kòm si ou deja defini faktoryèl (4). Se konsa, pou nenpòt ki faktoryèl (n), li nan pwodwi a nan n ak faktoryèl anvan an. Apre sa, faktoryèl anvan sa a se jwenn lè w rele faktoryèl nan n mwens 1. Koulye a, wè si w ka aplike yon repetitif fonksyone tèt ou. Chaj moute tèminal ou, oswa run.cs50.net, epi ekri yon sòm fonksyon ki pran yon n nonb antye ki pè ak retounen nan sòm nan tout pozitif youn apre lòt nonm antye ki soti nan n a 1. Mwen te ekri soti montan lajan yo nan kèk valè ede ou nou an. Premyèman, konnen ki la ka baz kondisyon. Lè sa a, gade nan sòm (5). Èske ou ka eksprime li nan tèm nan yon lòt sòm? Koulye a, sa ki sou sòm (4)? Ki jan w ka eksprime sòm (4) an tèm de yon lòt sòm? Yon fwa ou gen sòm (5) ak sòm total (4) eksprime an tèm de lòt montan lajan, al gade si ou ka idantifye yon modèl pou sòm total (n). Si ou pa, eseye yon kèk lòt nimewo ak eksprime montan lajan yo nan tèm de yon lòt nimewo. Pa Identification modèl pou disrè nimewo, w ap byen sou wout ou a idantifye modèl la pou nenpòt ki n. Rkursyon se yon zouti vrèman pwisan, Se konsa, nan kou li pa nan limite a sa sèlman fonksyon matematik. Rkursyon ka itilize trè efektivman lè fè fas ak pye bwa pou egzanp. Tcheke ti bout tan an sou pye bwa pou yon plis revizyon bon jan, men pou kounye a sonje ke pye bwa rechèch binè, nan patikilye, yo te fè leve nan nœuds, chak ki gen yon valè ak de pwent ne. Anjeneral, sa a se reprezante pa la ne paran ki gen yon sèl liy pwente ne nan pitit bò gòch ak yon ne nan pitit dwat. Estrikti a nan yon rechèch binè pye bwa confer tèt li byen nan yon rechèch repetitif. Rele nan repetitif swa pase nan la bò gòch oswa ne nan dwa, men li plis nan ki nan kout la pyebwa. Di ou vle fè yon operasyon sou chak ne yon sèl nan yon pye bwa binè. Ki jan ou ta ka ale sou sa? Oke, ou ta ka ekri yon repetitif fonksyon ki fè operasyon an sou ne paran an epi fè yon repetitif rele nan fonksyon an menm, pase nan bò gòch la ak pitit dwa nœuds. Pou egzanp, fonksyon sa a, foo, ki chanje valè a nan yon ne bay ak tout timoun li yo nan 1. Ka a baz yon nil sa ki lakòz ne fonksyon an retounen, ki endike ki pa gen okenn nœuds kite nan-pyebwa sub sa a. Se pou nou mache atravè li. Paran an premye se 13. Nou chanje valè la a 1, ak Lè sa a, rele fonksyon nou an sou bò gòch la kòm byen kòm bò dwat la. Se fonksyon an, foo, yo rele sou bò gòch la sub-pye bwa an premye, se konsa ne gòch la yo pral remete li nan 1 ak foo pral dwe rele sou timoun ki ne la, premye kite la ak Lè sa a, dwat la, yo ak sou sa ak pou fè. Apre sa, di yo ke branch pa gen nenpòt ki plis timoun se konsa menm pwosesis yo yo ap kontinye pou timoun yo dwa jouk nœuds pye bwa a tout antye a yo remete li nan 1. Kòm ou ka wè, ou se pa sa sèlman yo jis yon sèl repetitif apèl. Menm jan anpil jan pral jwenn travay la fè. E si ou te gen yon pye kote chak ne te gen twa timoun, Gòch li yo, mwayen, ak dwa? Kouman ou ta edite foo? Oke, ki senp. Jis ajoute yon lòt apèl repetitif ak pase nan konsèy la ne presegondè. Rkursyon se yon bagay ki gen anpil pouvwa epi yo pa nan mansyone elegant, men li ka gen yon konsèp difisil an premye, se konsa se pou pasyans epi pran tan ou. Kòmanse ak ka de baz la. Li pi pi fasil a idantifye, ak Lè sa a, ou ka travay bak apati de la. Ou konnen ou bezwen yo rive jwenn ou ka baz, se konsa ke fòs ba ou yon sijesyon kèk. Eseye eksprime yon sèl ka espesifik nan tèm de lòt ka yo, oswa nan sub-aparèy televisyon HD. Mèsi pou gade sa a kout. Omwen a anpil, kounye a ou kapab konprann blag tankou sa a. Non mwen se Zamyla, e sa se cs50. Pran fonksyon sa a, hi, yon fonksyon anile ki pran yon Int, n, kòm opinyon. Ka a baz vini anvan. Si n gen mwens pase 0, ekri ak lèt ​​detache "Bay" ak retou.