1 00:00:00,000 --> 00:00:05,587 2 00:00:05,587 --> 00:00:07,670 Doug Lloyd: Si ou te wè videyo a sou rkursyon, 3 00:00:07,670 --> 00:00:10,170 pwosesis la tout antye ta ka gen te sanble yon ti jan majik. 4 00:00:10,170 --> 00:00:10,930 Ki jan li travay? 5 00:00:10,930 --> 00:00:15,010 Ki jan fonksyon yo konnen yo ke yo bezwen rete tann epi rete tann pou yon lòt valè 6 00:00:15,010 --> 00:00:19,150 retounen soti nan yon fonksyon diferan rele yo nan lòd yo jwenn rezilta a nou vle? 7 00:00:19,150 --> 00:00:22,550 >> Oke, rezon ki fè yo sa a ap travay se paske nan yon bagay ke yo rekonèt kòm chemine a apèl. 8 00:00:22,550 --> 00:00:26,360 Lè ou rele yon fonksyon, nan sistèm kouche sou kote espas nan memwa 9 00:00:26,360 --> 00:00:28,120 pou sa fonksyon fè travay li yo. 10 00:00:28,120 --> 00:00:31,720 Apre sa, nou rele sa yo fragman nan memwa ki yo te mete sou kote pou chak fonksyon 11 00:00:31,720 --> 00:00:35,670 rele yon ankadreman chemine oswa yon ankadreman fonksyon. 12 00:00:35,670 --> 00:00:38,290 Ak jan ou ta ka atann, sa yo ankadreman chemine 13 00:00:38,290 --> 00:00:41,000 ap viv sou pati nan pil nan memwa. 14 00:00:41,000 --> 00:00:43,960 15 00:00:43,960 --> 00:00:47,540 >> Plis pase yon fonksyon chemine ankadreman ka egziste nan memwa nan yon tan bay yo. 16 00:00:47,540 --> 00:00:51,240 Si prensipal rele yon mouvman fonksyon, yo epi li deplase apèl direksyon, 17 00:00:51,240 --> 00:00:54,460 tout twa fonksyon gen ankadreman louvri. 18 00:00:54,460 --> 00:00:57,350 Men, yo pa tout gen ankadreman aktif. 19 00:00:57,350 --> 00:00:59,410 Ankadreman sa yo yo ranje nan yon pil. 20 00:00:59,410 --> 00:01:01,820 Apre sa, ankadreman an ki soti nan pi resamman rele 21 00:01:01,820 --> 00:01:04,390 fonksyon se toujou sou tèt pil la. 22 00:01:04,390 --> 00:01:07,150 E ke se toujou ankadreman an aktif. 23 00:01:07,150 --> 00:01:10,420 Genyen sèlman vrèman tout tan yon sèl fonksyon sa a, se aktif nan yon moman. 24 00:01:10,420 --> 00:01:12,420 Li nan youn nan sou tèt pil la. 25 00:01:12,420 --> 00:01:17,620 >> Lè yon fonksyon rele yon lòt fonksyon, li sòt de près pran yon poz. 26 00:01:17,620 --> 00:01:20,590 Li sòt de se sou kenbe, ap tann. 27 00:01:20,590 --> 00:01:24,050 Apre sa, se yon lòt ankadreman chemine pouse sou chemine a sou tèt li. 28 00:01:24,050 --> 00:01:26,150 Epi sa vin ankadreman an aktif. 29 00:01:26,150 --> 00:01:28,600 Apre sa, ankadreman an imedyatman anba a li bezwen yo rete tann 30 00:01:28,600 --> 00:01:33,560 jiskaske li se ankò ankadreman an aktif anvan li ka reprann travay li yo. 31 00:01:33,560 --> 00:01:35,870 Lè yon fonksyon se konplè epi li fè, 32 00:01:35,870 --> 00:01:37,720 Se ankadreman li yo déja nan chemine a. 33 00:01:37,720 --> 00:01:38,950 Sa a tèminoloji la. 34 00:01:38,950 --> 00:01:41,110 Apre sa, ankadreman an imedyatman anba a li, jan mwen jis te di, 35 00:01:41,110 --> 00:01:42,880 vin nouvo ankadreman an aktif. 36 00:01:42,880 --> 00:01:45,960 >> Men, si li rele yon lòt fonksyon, li pral pran yon poz ankò. 37 00:01:45,960 --> 00:01:49,290 Chemine ankadreman ke nouvo fonksyon nan pral dwe pouse sou tèt la nan chemine a. 38 00:01:49,290 --> 00:01:50,650 Li pral fè travay li yo. 39 00:01:50,650 --> 00:01:52,100 Li ta ka pòp tounen an. 40 00:01:52,100 --> 00:01:55,630 Ak fonksyon nan lòt anba a li ka reprann ankò. 41 00:01:55,630 --> 00:02:00,080 >> Se konsa nou ale nan sa a ankò, kap nan lide a nan fonksyon an faktoryèl 42 00:02:00,080 --> 00:02:03,070 ke nou defini nan la rkursyon videyo yo wè 43 00:02:03,070 --> 00:02:07,770 egzakteman ki jan majik la dèyè sa a pwosesis repetitif ap pran plas. 44 00:02:07,770 --> 00:02:09,870 Se konsa, sa a se tout antye dosye nou an, dwa? 45 00:02:09,870 --> 00:02:14,000 Nou defini de functions-- prensipal ak reyalite. 46 00:02:14,000 --> 00:02:15,980 E kòm nou ta ka atann, nenpòt pwogram C ki pral 47 00:02:15,980 --> 00:02:18,470 yo kòmanse nan liy lan premye nan prensipal la. 48 00:02:18,470 --> 00:02:21,660 >> Se konsa, nou kreye yon nouvo ankadreman chemine pou prensipal la. 49 00:02:21,660 --> 00:02:23,320 Epi, se k ap pase yo kòmanse kouri. 50 00:02:23,320 --> 00:02:25,270 Apèl Main printf. 51 00:02:25,270 --> 00:02:29,390 Apre sa, printf ki pral enprime soti faktoryèl a 5. 52 00:02:29,390 --> 00:02:31,440 Oke, li pa konnen sa faktoryèl nan 5 ki, 53 00:02:31,440 --> 00:02:35,620 ak pou apèl sa a se deja depann sou yon lòt apèl fonksyon. 54 00:02:35,620 --> 00:02:37,270 Se konsa, prensipal ki pral pran yon poz la a. 55 00:02:37,270 --> 00:02:39,103 Mwen pral kite li yo arrow dwa gen, koulè 56 00:02:39,103 --> 00:02:41,360 li koulè a ​​menm jan ak nan pile ankadreman sou bò dwat la, 57 00:02:41,360 --> 00:02:47,720 yo endike ke prensipal ki pral friz isit la pandan y ap faktoryèl nan 5 yo rele. 58 00:02:47,720 --> 00:02:49,300 >> Se konsa, faktoryèl nan 5 yo rele. 59 00:02:49,300 --> 00:02:53,160 Epi, se k ap pase yo kòmanse nan trè an kòmanse nan fonksyon an faktoryèl. 60 00:02:53,160 --> 00:02:55,440 Li mande kesyon an mwen egal a 1? 61 00:02:55,440 --> 00:02:56,810 Se 5 egal a 1? 62 00:02:56,810 --> 00:02:57,410 Oke, pa gen okenn. 63 00:02:57,410 --> 00:03:01,110 Se konsa, li k ap pase yo desann nan lòt pati, retounen nan fwa n 64 00:03:01,110 --> 00:03:02,990 faktoryèl nan n mwens 1. 65 00:03:02,990 --> 00:03:03,490 Oke, OK. 66 00:03:03,490 --> 00:03:07,070 >> Se konsa, kounye a, faktoryèl a 5 se depann sou yon lòt apèl 67 00:03:07,070 --> 00:03:09,740 faktoryèl, pase nan 4 kòm paramèt nan. 68 00:03:09,740 --> 00:03:14,210 Se konsa, faktoryèl a nan 5 ankadreman, ki ankadreman wouj, 69 00:03:14,210 --> 00:03:17,160 ki pral friz dwa gen nan ki liy mwen te endike 70 00:03:17,160 --> 00:03:21,914 epi tann pou faktoryèl nan 4 a fini ki sa li bezwen fè pou ke lè sa a li 71 00:03:21,914 --> 00:03:23,330 ka vin ankadreman an aktif ankò. 72 00:03:23,330 --> 00:03:26,890 >> Se konsa, faktoryèl nan 4 kòmanse nan nan konmansman an nan faktoryèl. 73 00:03:26,890 --> 00:03:28,556 Se 4 egal a 1? 74 00:03:28,556 --> 00:03:30,180 Non, se konsa li a pral fè menm bagay la. 75 00:03:30,180 --> 00:03:31,590 Li k ap pase yo desann branch lan lòt bagay. 76 00:03:31,590 --> 00:03:33,240 Li k ap pase pou li ale nan ki liy nan kòd. 77 00:03:33,240 --> 00:03:35,710 OK, mwen pral retounen kat fwa. 78 00:03:35,710 --> 00:03:41,270 Oh, faktoryèl a 3-- se konsa faktoryèl a 4 depann sou faktoryèl nan 3 fini. 79 00:03:41,270 --> 00:03:43,055 >> Se konsa, li bezwen yo rele faktoryèl nan 3. 80 00:03:43,055 --> 00:03:45,180 Epi sa a, pral ale nan menm pwosesis la ankò. 81 00:03:45,180 --> 00:03:48,200 Li kòmanse nan, vin isit la. 82 00:03:48,200 --> 00:03:50,980 Faktoryèl nan 3 depann sou faktoryèl nan 1. 83 00:03:50,980 --> 00:03:53,750 Se konsa, faktoryèl nan 2 kòmanse, vin isit la. 84 00:03:53,750 --> 00:03:56,310 Sa depann de faktoryèl nan 1. 85 00:03:56,310 --> 00:03:57,430 Faktoryèl nan 1 kòmanse. 86 00:03:57,430 --> 00:03:57,650 >> OK. 87 00:03:57,650 --> 00:03:59,775 Se konsa, kounye a, nou ap vin yon kote ki enteresan, dwa? 88 00:03:59,775 --> 00:04:02,190 Se konsa, kounye, 1 ki egal a 1. 89 00:04:02,190 --> 00:04:05,130 Se konsa, nou retounen 1. 90 00:04:05,130 --> 00:04:06,770 Nan pwen sa a, nou ap retounen. 91 00:04:06,770 --> 00:04:07,880 Fonksyon an nan fè. 92 00:04:07,880 --> 00:04:11,140 Li nan konpòtman is-- gen nan pa gen anyen lòt pou li fè, 93 00:04:11,140 --> 00:04:17,006 ak pou ankadreman an pil pou faktoryèl nan 1 Pops la. 94 00:04:17,006 --> 00:04:17,589 Li nan fini. 95 00:04:17,589 --> 00:04:19,480 Li tounen 1. 96 00:04:19,480 --> 00:04:23,370 Epi kounyeya, faktoryèl a 2, ki te ankadreman an imedyatman anba a li 97 00:04:23,370 --> 00:04:26,160 nan chemine a, vin ankadreman an aktif. 98 00:04:26,160 --> 00:04:29,030 >> Epi, se ka ranmase egzakteman ki kote li te kite la. 99 00:04:29,030 --> 00:04:32,240 Li te ap tann pou yon faktoryèl de 1 a fin fè travay li yo. 100 00:04:32,240 --> 00:04:33,610 Li gen kounye a fini. 101 00:04:33,610 --> 00:04:35,510 Se konsa, isit la nou yo. 102 00:04:35,510 --> 00:04:38,080 >> Faktoryèl nan 1 tounen yon valè de 1. 103 00:04:38,080 --> 00:04:42,430 Se konsa, faktoryèl nan 2 ka di retounen 2 fwa 1. 104 00:04:42,430 --> 00:04:43,680 Se travay li yo kounye a fè. 105 00:04:43,680 --> 00:04:49,110 Li nan tounen 2 a faktoryèl nan 3, ki te ap tann pou li. 106 00:04:49,110 --> 00:04:53,370 Faktoryèl nan 3 se kounye a ankadreman an tèt, ankadreman an aktif nan pil la. 107 00:04:53,370 --> 00:04:58,617 Se konsa, li di, OK, byen, mwen pral retounen 3 fwa 2, ki se 6. 108 00:04:58,617 --> 00:05:00,700 Apre sa, mwen pral bay ki valè tounen nan faktoryèl 109 00:05:00,700 --> 00:05:03,430 nan 4, ki te te ap tann pou m '. 110 00:05:03,430 --> 00:05:04,500 Mwen fini. 111 00:05:04,500 --> 00:05:09,410 Faktoryèl nan 3 Pops koupe chemine a, ak faktoryèl nan 4 se kounye a ankadreman an aktif. 112 00:05:09,410 --> 00:05:13,510 >> 4 di, OK, mwen pral retounen 4 fwa faktoryèl a nan 3, ki te sis. 113 00:05:13,510 --> 00:05:15,980 Sa ki te nan valè ki faktoryèl nan 3 retounen. 114 00:05:15,980 --> 00:05:19,010 Se konsa, 4 fwa 6 se 24. 115 00:05:19,010 --> 00:05:20,990 Apre sa, mwen pral pase ki tounen nan faktoryèl 116 00:05:20,990 --> 00:05:23,160 nan 5, ki te te ap tann pou m '. 117 00:05:23,160 --> 00:05:25,270 Faktoryèl nan 5 se kounye a ankadreman an aktif. 118 00:05:25,270 --> 00:05:30,700 Li nan ale nan retounen 5 fwa faktoryèl a 4-- 5 fwa 24, oswa 120-- 119 00:05:30,700 --> 00:05:32,722 epi bay ke valè tounen nan prensipal yo, ki te gen 120 00:05:32,722 --> 00:05:35,680 te ap tann avèk pasyans pou yon trè bon bout tan nan pati anba a nan chemine a. 121 00:05:35,680 --> 00:05:36,640 >> Li nan kote li te kòmanse. 122 00:05:36,640 --> 00:05:37,670 Li te fè apèl sa a. 123 00:05:37,670 --> 00:05:39,400 Plizyè ankadreman te pran plis pase nan tèt la. 124 00:05:39,400 --> 00:05:41,890 Li se kounye a tounen sou tèt pil la. 125 00:05:41,890 --> 00:05:43,450 Li nan ankadreman an aktif. 126 00:05:43,450 --> 00:05:47,810 Se konsa, prensipal te resevwa valè a 120 tounen soti nan faktoryèl a 5. 127 00:05:47,810 --> 00:05:50,750 Li te ap tann yo enprime soti ke valè. 128 00:05:50,750 --> 00:05:51,657 Lè sa a, li fè. 129 00:05:51,657 --> 00:05:53,240 Gen nan pa gen plis liy nan kòd nan prensipal la. 130 00:05:53,240 --> 00:05:56,800 Se konsa, ankadreman prensipal la Pops koupe chemine a, epi nou ap fè. 131 00:05:56,800 --> 00:05:58,992 >> Epi sa a, ki jan rkursyon fonksyone. 132 00:05:58,992 --> 00:06:00,200 Sa a ki jan ankadreman chemine travay. 133 00:06:00,200 --> 00:06:03,120 Moun sa yo ki apèl fonksyon sa ki te rive deja 134 00:06:03,120 --> 00:06:06,620 yo se jis sou pran yon poz, rete ap tann pou apèl yo ki vin apre 135 00:06:06,620 --> 00:06:12,050 a fini pou yo ka vin aktif nan ankadreman epi fini sa yo bezwen fè. 136 00:06:12,050 --> 00:06:13,060 >> Mwen se Doug Lloyd. 137 00:06:13,060 --> 00:06:14,880 Sa a se CS50. 138 00:06:14,880 --> 00:06:16,580