1 00:00:00,000 --> 00:00:03,110 >> GARSIAKALBIS 1: Šiuo paskutiniu versija Sigma, aš parašiau, ką aš vadinčiau 2 00:00:03,110 --> 00:00:06,570 kartotinis sprendimas, kuriuo aš pirmyn kilpa suskaičiuoti visus 3 00:00:06,570 --> 00:00:09,720 numeriai nuo 1 iki m, o vėliau grąžinimo sumą. 4 00:00:09,720 --> 00:00:12,560 >> Tačiau paaiškėja, mes galime naudoti kitą būdas įgyvendinti tą pačią 5 00:00:12,560 --> 00:00:15,120 funkcija, technika žinomas kaip rekursija. 6 00:00:15,120 --> 00:00:19,360 Grįžtamojo funkcija, taip sakant, yra tiesiog vienas, kad vadina save. 7 00:00:19,360 --> 00:00:21,290 Dabar ir pati, kad gali būti problema. 8 00:00:21,290 --> 00:00:24,500 Jei funkcija tiesiog save vadina, kurie save vadina, kurie vadina save, 9 00:00:24,500 --> 00:00:26,080 kad procesas gali botas nors baigtųsi. 10 00:00:26,080 --> 00:00:30,490 Bet kol mes apima vadinamąjį bazinį scenarijų, sąlyga, kuri užtikrina 11 00:00:30,490 --> 00:00:34,930 kad kai kuriais atvejais mes neturime skambinti save, kad kitaip procesas 12 00:00:34,930 --> 00:00:37,070 begalinis apsisukimo turėtų būti nutraukta. 13 00:00:37,070 --> 00:00:39,180 >> Leiskite dabar reimplement Sigma taip. 14 00:00:39,180 --> 00:00:43,810 Jei n yra mažesnis arba lygus 0, aš tiesiog, ir šiek tiek savavališkai, 15 00:00:43,810 --> 00:00:45,670 ketina grįžti 0. 16 00:00:45,670 --> 00:00:49,370 Kita vertus, ką aš ruošiuosi daryti iš tikrųjų apskaičiuoti Sigma teigiamą int 17 00:00:49,370 --> 00:00:50,460 kad aš buvo perduoti. 18 00:00:50,460 --> 00:00:52,050 >> Dabar, kas yra sigma iš m? 19 00:00:52,050 --> 00:00:55,480 Na, sigma M, žinoma, 1 susumuoti per m. 20 00:00:55,480 --> 00:00:58,820 Bet jei mes galvojame apie tai į kitą pusę, tai tiesiog m plius suma m 21 00:00:58,820 --> 00:01:02,560 minus 1 plius minus m 2 ir tt, visą kelią žemyn iki 1. 22 00:01:02,560 --> 00:01:08,080 Taigi šia prasme, atrodo, kad Galėčiau tiesiog grįžti m plius. 23 00:01:08,080 --> 00:01:10,210 >> Ir tada man reikia m minuso 1 plius minus 2 m. 24 00:01:10,210 --> 00:01:13,470 Bet aš turiu funkcija, kuri gali suteikti man tiksliai atsakyti taip, būtent 25 00:01:13,470 --> 00:01:16,340 sigma M minus 1. 26 00:01:16,340 --> 00:01:19,670 >> Dabar skambina save tokiu būdu nėra atrodo geriausia idėja. 27 00:01:19,670 --> 00:01:22,610 Nes jei sigma ragina sigma, kurioje raginama sigma kurioje raginama sigma, jūs 28 00:01:22,610 --> 00:01:24,480 manyčiau, kad šis procesas gali ne bet kada nutraukti. 29 00:01:24,480 --> 00:01:27,720 Bet tai kodėl mes turėjome vadinamąjį bazę atveju šio funkciją viršuje. 30 00:01:27,720 --> 00:01:31,540 Jei sąlyga, kad tikrina, jei m yra mažesnė arba lygi 0 Nesiruošiu 31 00:01:31,540 --> 00:01:32,610 vadintis. 32 00:01:32,610 --> 00:01:37,010 Aš vietoj ketina grįžti 0, o savo ruožtu bus įtraukta į 33 00:01:37,010 --> 00:01:39,950 ankstesni numeriai, kad aš sumuoja iki, ir taip sustabdyti šį 34 00:01:39,950 --> 00:01:41,740 kitaip begalinis procesas. 35 00:01:41,740 --> 00:01:43,710 >> Leiskite dabar pamatyti, jei ši nauja įgyvendinimo darbai. 36 00:01:43,710 --> 00:01:46,510 Išsaugokime, kaupti ir paleisti šią programą. 37 00:01:46,510 --> 00:01:50,640 Padaryti sigma 1 taškas velniop sigma 1. 38 00:01:50,640 --> 00:01:52,900 Ir tegul pateikia jai Tie patys skaičiai kaip ir anksčiau. 39 00:01:52,900 --> 00:01:55,520 2, kuris turėtų tikiuosi man 3. 40 00:01:55,520 --> 00:01:58,970 Leiskite pateikti su 3, o turėtų tikiuosi man 6. 41 00:01:58,970 --> 00:02:03,480 Ir tegul pagaliau suteikia jai 50, kuris iš tiesų suteikia man 1275. 42 00:02:03,480 --> 00:02:06,130