1 00:00:00,000 --> 00:00:07,800 2 00:00:07,800 --> 00:00:10,190 >> ZAMYLA: Yo nan lòd yo konprann rkursyon, ou dwe 3 00:00:10,190 --> 00:00:13,820 premye konprann rkursyon. 4 00:00:13,820 --> 00:00:17,280 Èske w gen rkursyon nan pwogram konsepsyon vle di ke ou gen pwòp tèt ou-referansyèl 5 00:00:17,280 --> 00:00:18,570 definisyon. 6 00:00:18,570 --> 00:00:21,520 Estrikti done repetitif, pou egzanp, yo se done estrikti ki 7 00:00:21,520 --> 00:00:23,990 gen ladan yo tèt yo nan definisyon yo. 8 00:00:23,990 --> 00:00:27,160 Men, jodi a, nou ap ale nan konsantre sou fonksyon repetitif. 9 00:00:27,160 --> 00:00:31,160 >> Sonje byen, fonksyon pran entrain, agiman, epi retounen yon valè kòm yo 10 00:00:31,160 --> 00:00:34,480 pwodiksyon reprezante pa dyagram sa a isit la. 11 00:00:34,480 --> 00:00:38,060 Nou pral panse nan bwat la kòm kò a nan fonksyon an, ki gen yon seri 12 00:00:38,060 --> 00:00:42,340 enstriksyon ki entèprete la D 'epi yo bay yon pwodiksyon. 13 00:00:42,340 --> 00:00:45,660 Lè w ap pran yon gade pi pre andedan kò a nan fonksyon a ta ka revele rele nan zòrèy 14 00:00:45,660 --> 00:00:47,430 lòt fonksyon kòm byen. 15 00:00:47,430 --> 00:00:51,300 Pran fonksyon sa a ki senp, foo, ki pran yon fisèl sèl kòm opinyon ak 16 00:00:51,300 --> 00:00:54,630 simagri konbyen lèt ki fisèl te genyen an. 17 00:00:54,630 --> 00:00:58,490 Strlèn fonksyon an, pou fisèl longè, Yo rele, ki gen rannman ki 18 00:00:58,490 --> 00:01:01,890 obligatwa pou apèl la lè printf. 19 00:01:01,890 --> 00:01:05,770 >> Koulye a, sa ki fè yon fonksyon repetitif espesyal se ke li rele tèt li. 20 00:01:05,770 --> 00:01:09,610 Nou ka reprezante repetitif sa a rele ak flèch sa a zoranj 21 00:01:09,610 --> 00:01:11,360 loupin tounen nan tèt li. 22 00:01:11,360 --> 00:01:15,630 Men, egzekite tèt li ankò ap sèlman fè yon lòt apèl repetitif, ak 23 00:01:15,630 --> 00:01:17,150 yon lòt ak yon lòt. 24 00:01:17,150 --> 00:01:19,100 Men, fonksyon repetitif pa ka enfini. 25 00:01:19,100 --> 00:01:23,490 Yo gen nan fen yon jan kanmenm, oswa ou pwogram la ap kouri pou tout tan. 26 00:01:23,490 --> 00:01:27,680 >> Se konsa, nou bezwen jwenn yon fason yo kraze soti nan apèl yo repetitif. 27 00:01:27,680 --> 00:01:29,900 Nou rele ka sa a de baz la. 28 00:01:29,900 --> 00:01:33,570 Lè yo kondisyon an ka baz te rankontre, fonksyon an retounen san yo pa fè 29 00:01:33,570 --> 00:01:34,950 yon lòt apèl repetitif. 30 00:01:34,950 --> 00:01:39,610 Pran fonksyon sa a, hi, yon fonksyon anile ki pran yon n Int kòm opinyon. 31 00:01:39,610 --> 00:01:41,260 Ka a baz vini anvan. 32 00:01:41,260 --> 00:01:46,220 Si n gen mwens pase zewo, ekri ak lèt ​​detache babay ak retounen Pou tout lòt ka yo, nan 33 00:01:46,220 --> 00:01:49,400 fonksyon pral enprime hi ak egzekite rele nan repetitif. 34 00:01:49,400 --> 00:01:53,600 Yon lòt rele nan hi fonksyon an ak yon valè D 'dekremante. 35 00:01:53,600 --> 00:01:56,790 >> Koulye a, menm si nou ekri ak lèt ​​detache hi, nan fonksyon pa pral mete fen nan jiskaske nou 36 00:01:56,790 --> 00:02:00,370 retounen di ki kalite retounen li yo, nan sa a anile ka-a. 37 00:02:00,370 --> 00:02:04,830 Se konsa, pou chak n lòt pase ka a baz, sa a hi fonksyon ap retounen hi 38 00:02:04,830 --> 00:02:06,890 nan n mwens 1. 39 00:02:06,890 --> 00:02:10,050 Depi fonksyon sa a se anile menm si, nou pa pral klèman tape retounen isit la. 40 00:02:10,050 --> 00:02:12,000 Nou pral jis egzekite fonksyon an. 41 00:02:12,000 --> 00:02:16,960 Se konsa, lè w rele hi (3) pral enprime hi ak egzekite hi (2) ki ègzekutra hi (1) yon sèl 42 00:02:16,960 --> 00:02:20,560 ki ègzekutra hi (0), ki kote nan se kondisyon ka baz te rankontre. 43 00:02:20,560 --> 00:02:24,100 Se konsa, hi (0) simagri babay epi retounen. 44 00:02:24,100 --> 00:02:24,990 >> OK. 45 00:02:24,990 --> 00:02:28,690 Se konsa, kounye a ke nou konprann Basics yo nan fonksyon repetitif, yo ke yo bezwen 46 00:02:28,690 --> 00:02:32,730 omwen yon ka baz menm jan tou yon repetitif rele, se pou yo deplase sou yon 47 00:02:32,730 --> 00:02:34,120 plis enpòtan egzanp. 48 00:02:34,120 --> 00:02:37,830 Youn ki pa jis retounen anile pa gen pwoblèm sa. 49 00:02:37,830 --> 00:02:41,340 >> Se pou nou pran yon gade nan faktoryèl la operasyon itilize pi souvan nan 50 00:02:41,340 --> 00:02:43,660 pwobabilite kalkil. 51 00:02:43,660 --> 00:02:48,120 Faktoryèl nan n se pwodwi a nan chak nonm antye ki pozitif pi piti pase 52 00:02:48,120 --> 00:02:49,400 ak egal a n. 53 00:02:49,400 --> 00:02:56,731 Senk Se konsa, faktoryèl se 5 fwa 4 fwa 3 fwa 2 fwa 1 bay 120. 54 00:02:56,731 --> 00:03:01,400 Kat faktoryèl se 4 fwa 3 fwa 2 fwa 1 bay 24. 55 00:03:01,400 --> 00:03:04,910 Apre sa, règ la menm aplike nan nenpòt ki nonb antye ki pè pozitif. 56 00:03:04,910 --> 00:03:08,670 >> Se konsa, kouman ta ka nou ekri yon repetitif fonksyon ki kalkile faktoryèl la 57 00:03:08,670 --> 00:03:09,960 nan yon kantite? 58 00:03:09,960 --> 00:03:14,700 Bon, nou pral bezwen idantifye tou de la baz ka ak apèl la repetitif. 59 00:03:14,700 --> 00:03:18,250 Rele nan repetitif yo pral menm bagay la tou pou tout ka eksepte pou baz la 60 00:03:18,250 --> 00:03:21,420 ka, ki vle di ke nou pral gen jwenn yon modèl ki pral ban nou nou 61 00:03:21,420 --> 00:03:23,350 vle rezilta. 62 00:03:23,350 --> 00:03:30,270 >> Pou egzanp sa a, wè ki jan 5 faktoryèl enplike nan miltipliye 4 pa 3 pa 2 pa 1 63 00:03:30,270 --> 00:03:33,010 Epi ki miltiplikasyon trè menm yo jwenn isit la, nan 64 00:03:33,010 --> 00:03:35,430 definisyon nan 4 faktoryèl. 65 00:03:35,430 --> 00:03:39,810 Se konsa, nou wè ke 5 faktoryèl se jis 5 fwa 4 faktoryèl. 66 00:03:39,810 --> 00:03:43,360 Koulye a, modèl sa a aplike a 4 faktoryèl kòm byen? 67 00:03:43,360 --> 00:03:44,280 Wi. 68 00:03:44,280 --> 00:03:49,120 Nou wè ke 4 faktoryèl gen nan miltiplikasyon 3 fwa 2 fwa 1, nan 69 00:03:49,120 --> 00:03:51,590 definisyon trè menm jan ak 3 faktoryèl. 70 00:03:51,590 --> 00:03:56,950 Se konsa, 4 faktoryèl ki egal a 4 fwa 3 faktoryèl, ak sou sa ak pou fè nou 71 00:03:56,950 --> 00:04:02,170 modèl baton jouk 1 faktoryèl, ki pa definisyon ki egal a 1. 72 00:04:02,170 --> 00:04:04,950 >> Gen nan pa gen lòt ki pozitif nonb antye relatif kite. 73 00:04:04,950 --> 00:04:07,870 Se konsa, nou gen modèl la pou repetitif rele nou an. 74 00:04:07,870 --> 00:04:13,260 n faktoryèl ki egal a fwa n faktoryèl la nan n mwens 1. 75 00:04:13,260 --> 00:04:14,370 Apre sa, ka baz nou an? 76 00:04:14,370 --> 00:04:17,370 Ki pral jis pou definisyon nou an nan 1 faktoryèl. 77 00:04:17,370 --> 00:04:19,995 >> Se konsa, kounye a nou kapab deplase sou ekri Kòd pou fonksyon an. 78 00:04:19,995 --> 00:04:24,110 Pou ka a baz, nou pral gen a kondisyon n egal egal 1, kote 79 00:04:24,110 --> 00:04:25,780 nou pral tounen 1. 80 00:04:25,780 --> 00:04:29,280 Lè sa a, k ap deplase sou apèl la repetitif, nou pral retounen fwa n nan 81 00:04:29,280 --> 00:04:32,180 faktoryèl nan n mwens 1. 82 00:04:32,180 --> 00:04:33,590 >> Koulye a, kite nan tès sa a nou an. 83 00:04:33,590 --> 00:04:35,900 Ann eseye faktoryèl 4. 84 00:04:35,900 --> 00:04:39,420 Pou chak fonksyon nou li nan egal a 4 fwa faktoryèl (3). 85 00:04:39,420 --> 00:04:43,040 Faktoryèl (3) ki egal a 3 fwa faktoryèl (2). 86 00:04:43,040 --> 00:04:48,700 Faktoryèl (2) ki egal a 2 fwa faktoryèl (1), ki retounen 1. 87 00:04:48,700 --> 00:04:52,490 Faktoryèl (2) kounye a retounen 2 fwa 1, 2. 88 00:04:52,490 --> 00:04:55,960 Faktoryèl (3) kapab kounye a retounen 3 fwa 2, 6. 89 00:04:55,960 --> 00:05:02,490 E finalman, faktoryèl (4) retounen 4 fwa, 6, 24. 90 00:05:02,490 --> 00:05:06,780 >> Si w ap rankontre nenpòt difikilte pou ak apèl la repetitif, pretann ke 91 00:05:06,780 --> 00:05:09,660 fonksyon an ap travay deja. 92 00:05:09,660 --> 00:05:13,450 Ki sa mwen vle di pa sa a se ke ou ta dwe mete konfyans apèl repetitif ou a retounen 93 00:05:13,450 --> 00:05:15,100 valè yo dwat. 94 00:05:15,100 --> 00:05:18,960 Pou egzanp, si mwen konnen ke faktoryèl (5) egal 5 fwa 95 00:05:18,960 --> 00:05:24,870 faktoryèl (4), mwen pral fè konfyans ki faktoryèl (4) ap ban m '24. 96 00:05:24,870 --> 00:05:28,510 Panse a li kòm yon varyab, si ou pral, kòm si ou deja defini 97 00:05:28,510 --> 00:05:30,070 faktoryèl (4). 98 00:05:30,070 --> 00:05:33,850 Se konsa, pou nenpòt ki faktoryèl (n), li nan pwodwi a nan n ak 99 00:05:33,850 --> 00:05:35,360 faktoryèl anvan an. 100 00:05:35,360 --> 00:05:38,130 Apre sa, faktoryèl anvan sa a se jwenn lè w rele 101 00:05:38,130 --> 00:05:41,330 faktoryèl nan n mwens 1. 102 00:05:41,330 --> 00:05:45,130 >> Koulye a, wè si w ka aplike yon repetitif fonksyone tèt ou. 103 00:05:45,130 --> 00:05:50,490 Chaj moute tèminal ou, oswa run.cs50.net, epi ekri yon sòm fonksyon 104 00:05:50,490 --> 00:05:54,770 ki pran yon n nonb antye ki pè ak retounen nan sòm nan tout pozitif youn apre lòt 105 00:05:54,770 --> 00:05:57,490 nonm antye ki soti nan n a 1. 106 00:05:57,490 --> 00:06:01,000 Mwen te ekri soti montan lajan yo nan kèk valè ede ou nou an. 107 00:06:01,000 --> 00:06:04,030 Premyèman, konnen ki la ka baz kondisyon. 108 00:06:04,030 --> 00:06:06,170 Lè sa a, gade nan sòm (5). 109 00:06:06,170 --> 00:06:09,270 Èske ou ka eksprime li nan tèm nan yon lòt sòm? 110 00:06:09,270 --> 00:06:11,290 Koulye a, sa ki sou sòm (4)? 111 00:06:11,290 --> 00:06:15,630 Ki jan w ka eksprime sòm (4) an tèm de yon lòt sòm? 112 00:06:15,630 --> 00:06:19,655 >> Yon fwa ou gen sòm (5) ak sòm total (4) eksprime an tèm de lòt montan lajan, al gade 113 00:06:19,655 --> 00:06:22,970 si ou ka idantifye yon modèl pou sòm total (n). 114 00:06:22,970 --> 00:06:26,190 Si ou pa, eseye yon kèk lòt nimewo ak eksprime montan lajan yo nan 115 00:06:26,190 --> 00:06:28,410 tèm de yon lòt nimewo. 116 00:06:28,410 --> 00:06:31,930 Pa Identification modèl pou disrè nimewo, w ap byen sou wout ou a 117 00:06:31,930 --> 00:06:34,320 idantifye modèl la pou nenpòt ki n. 118 00:06:34,320 --> 00:06:38,040 >> Rkursyon se yon zouti vrèman pwisan, Se konsa, nan kou li pa nan limite a sa sèlman 119 00:06:38,040 --> 00:06:39,820 fonksyon matematik. 120 00:06:39,820 --> 00:06:44,040 Rkursyon ka itilize trè efektivman lè fè fas ak pye bwa pou egzanp. 121 00:06:44,040 --> 00:06:47,210 Tcheke ti bout tan an sou pye bwa pou yon plis revizyon bon jan, men pou kounye a 122 00:06:47,210 --> 00:06:51,140 sonje ke pye bwa rechèch binè, nan patikilye, yo te fè leve nan nœuds, chak 123 00:06:51,140 --> 00:06:53,820 ki gen yon valè ak de pwent ne. 124 00:06:53,820 --> 00:06:57,270 Anjeneral, sa a se reprezante pa la ne paran ki gen yon sèl liy pwente 125 00:06:57,270 --> 00:07:01,870 ne nan pitit bò gòch ak yon ne nan pitit dwat. 126 00:07:01,870 --> 00:07:04,510 Estrikti a nan yon rechèch binè pye bwa confer tèt li byen 127 00:07:04,510 --> 00:07:05,940 nan yon rechèch repetitif. 128 00:07:05,940 --> 00:07:09,730 Rele nan repetitif swa pase nan la bò gòch oswa ne nan dwa, men li plis 129 00:07:09,730 --> 00:07:10,950 nan ki nan kout la pyebwa. 130 00:07:10,950 --> 00:07:15,690 >> Di ou vle fè yon operasyon sou chak ne yon sèl nan yon pye bwa binè. 131 00:07:15,690 --> 00:07:17,410 Ki jan ou ta ka ale sou sa? 132 00:07:17,410 --> 00:07:20,600 Oke, ou ta ka ekri yon repetitif fonksyon ki fè operasyon an 133 00:07:20,600 --> 00:07:24,450 sou ne paran an epi fè yon repetitif rele nan fonksyon an menm, 134 00:07:24,450 --> 00:07:27,630 pase nan bò gòch la ak pitit dwa nœuds. 135 00:07:27,630 --> 00:07:31,650 Pou egzanp, fonksyon sa a, foo, ki chanje valè a nan yon ne bay ak 136 00:07:31,650 --> 00:07:33,830 tout timoun li yo nan 1. 137 00:07:33,830 --> 00:07:37,400 Ka a baz yon nil sa ki lakòz ne fonksyon an retounen, ki endike 138 00:07:37,400 --> 00:07:41,290 ki pa gen okenn nœuds kite nan-pyebwa sub sa a. 139 00:07:41,290 --> 00:07:42,620 >> Se pou nou mache atravè li. 140 00:07:42,620 --> 00:07:44,340 Paran an premye se 13. 141 00:07:44,340 --> 00:07:47,930 Nou chanje valè la a 1, ak Lè sa a, rele fonksyon nou an sou bò gòch la kòm byen 142 00:07:47,930 --> 00:07:49,600 kòm bò dwat la. 143 00:07:49,600 --> 00:07:53,910 Se fonksyon an, foo, yo rele sou bò gòch la sub-pye bwa an premye, se konsa ne gòch la 144 00:07:53,910 --> 00:07:57,730 yo pral remete li nan 1 ak foo pral dwe rele sou timoun ki ne la, 145 00:07:57,730 --> 00:08:01,900 premye kite la ak Lè sa a, dwat la, yo ak sou sa ak pou fè. 146 00:08:01,900 --> 00:08:05,630 Apre sa, di yo ke branch pa gen nenpòt ki plis timoun se konsa menm pwosesis yo 147 00:08:05,630 --> 00:08:09,700 yo ap kontinye pou timoun yo dwa jouk nœuds pye bwa a tout antye a yo 148 00:08:09,700 --> 00:08:11,430 remete li nan 1. 149 00:08:11,430 --> 00:08:15,390 >> Kòm ou ka wè, ou se pa sa sèlman yo jis yon sèl repetitif apèl. 150 00:08:15,390 --> 00:08:17,930 Menm jan anpil jan pral jwenn travay la fè. 151 00:08:17,930 --> 00:08:21,200 E si ou te gen yon pye kote chak ne te gen twa timoun, 152 00:08:21,200 --> 00:08:23,100 Gòch li yo, mwayen, ak dwa? 153 00:08:23,100 --> 00:08:24,886 Kouman ou ta edite foo? 154 00:08:24,886 --> 00:08:25,860 Oke, ki senp. 155 00:08:25,860 --> 00:08:30,250 Jis ajoute yon lòt apèl repetitif ak pase nan konsèy la ne presegondè. 156 00:08:30,250 --> 00:08:34,549 >> Rkursyon se yon bagay ki gen anpil pouvwa epi yo pa nan mansyone elegant, men li ka gen yon 157 00:08:34,549 --> 00:08:38,010 konsèp difisil an premye, se konsa se pou pasyans epi pran tan ou. 158 00:08:38,010 --> 00:08:39,370 Kòmanse ak ka de baz la. 159 00:08:39,370 --> 00:08:42,650 Li pi pi fasil a idantifye, ak Lè sa a, ou ka travay 160 00:08:42,650 --> 00:08:43,830 bak apati de la. 161 00:08:43,830 --> 00:08:46,190 Ou konnen ou bezwen yo rive jwenn ou ka baz, se konsa ke fòs 162 00:08:46,190 --> 00:08:47,760 ba ou yon sijesyon kèk. 163 00:08:47,760 --> 00:08:53,120 Eseye eksprime yon sèl ka espesifik nan tèm de lòt ka yo, oswa nan sub-aparèy televisyon HD. 164 00:08:53,120 --> 00:08:54,700 >> Mèsi pou gade sa a kout. 165 00:08:54,700 --> 00:08:58,920 Omwen a anpil, kounye a ou kapab konprann blag tankou sa a. 166 00:08:58,920 --> 00:09:01,250 Non mwen se Zamyla, e sa se cs50. 167 00:09:01,250 --> 00:09:04,306 168 00:09:04,306 --> 00:09:07,170 >> Pran fonksyon sa a, hi, yon fonksyon anile ki pran 169 00:09:07,170 --> 00:09:09,212 yon Int, n, kòm opinyon. 170 00:09:09,212 --> 00:09:11,020 Ka a baz vini anvan. 171 00:09:11,020 --> 00:09:14,240 Si n gen mwens pase 0, ekri ak lèt ​​detache "Bay" ak retou. 172 00:09:14,240 --> 00:09:15,490