1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 1: V tejto poslednej verzii sigma, som implementoval to, čo by som nazval 2 00:00:03,110 --> 00:00:06,570 iteratívny riešenie, kedy som použil vpred slučka počítať so všetkými 3 00:00:06,570 --> 00:00:09,720 čísla medzi 1 a m, potom vrátenie sumy. 4 00:00:09,720 --> 00:00:12,560 >> Ale ukazuje sa, môžeme použiť iný technika na vykonanie toho istého 5 00:00:12,560 --> 00:00:15,120 funkcie, technika známy ako rekurzia. 6 00:00:15,120 --> 00:00:19,360 Rekurzívne funkcie, aby som tak povedal, je jednoducho ten, ktorý volá sama seba. 7 00:00:19,360 --> 00:00:21,290 Teraz, samo o sebe, že by mohol byť problém. 8 00:00:21,290 --> 00:00:24,500 Keď je funkcia jednoducho volá sama seba, ktoré volá sama seba, ktorá volá sama seba, 9 00:00:24,500 --> 00:00:26,080 že proces môže Bot niekedy skončí. 10 00:00:26,080 --> 00:00:30,490 Ale tak dlho, ako sme sú tzv referenčný prípad, stav, ktorý zaisťuje 11 00:00:30,490 --> 00:00:34,930 že v niektorých situáciách sa nevolajte sami, že proces inak 12 00:00:34,930 --> 00:00:37,070 nekonečný smyčkování by mala byť zrušená. 13 00:00:37,070 --> 00:00:39,180 >> Poďme sa teraz implementujeme sigma nasledovne. 14 00:00:39,180 --> 00:00:43,810 Ak n je menšie ako alebo rovné 0, som jednoducho, a trochu ľubovoľne, 15 00:00:43,810 --> 00:00:45,670 bude return 0. 16 00:00:45,670 --> 00:00:49,370 Inak to, čo budem robiť, je v skutočnosti vypočítať Sigma pre pozitívny int 17 00:00:49,370 --> 00:00:50,460 že som podal. 18 00:00:50,460 --> 00:00:52,050 >> A teraz, čo je sigma m? 19 00:00:52,050 --> 00:00:55,480 Tak, sigma m je, samozrejme, súčet 1 až cez m. 20 00:00:55,480 --> 00:00:58,820 Ale ak si myslíme, že o tom na druhú stranu, je to proste suma m m plus 21 00:00:58,820 --> 00:01:02,560 mínus 1 plus mínus m 2, a tak ďalej, celú cestu až na 1. 22 00:01:02,560 --> 00:01:08,080 Takže v tomto zmysle sa zdá, že Mohol by som jednoducho vrátiť M plus. 23 00:01:08,080 --> 00:01:10,210 >> A potom musím m mínus 1 plus mínus 2 m 24 00:01:10,210 --> 00:01:13,470 Ale ja mám funkciu, ktorá môže dať mi presne tá odpoveď, a to 25 00:01:13,470 --> 00:01:16,340 sigma m mínus jedna. 26 00:01:16,340 --> 00:01:19,670 >> Teraz, volať seba týmto spôsobom nie je Zdá sa, ako najlepší nápad. 27 00:01:19,670 --> 00:01:22,610 Pretože ak sigma volá sigma, ktorý volá sigma, ktorý volá sigma, môžete 28 00:01:22,610 --> 00:01:24,480 by si myslel, že tento proces nemusí nikdy skončiť. 29 00:01:24,480 --> 00:01:27,720 Ale to je dôvod, prečo sme mali tzv základne puzdro na vrchole tejto funkcie. 30 00:01:27,720 --> 00:01:31,540 Ak podmienka, ktorá kontroluje, či m je menšie alebo rovné 0 Nemienim 31 00:01:31,540 --> 00:01:32,610 volať sám. 32 00:01:32,610 --> 00:01:37,010 Ja namiesto toho ísť vrátiť 0, čo potom sa bude pridaný do 33 00:01:37,010 --> 00:01:39,950 predchádzajúce čísla, ktoré som sčítavať nahor, čím sa zastaví tento 34 00:01:39,950 --> 00:01:41,740 inak nekonečný proces. 35 00:01:41,740 --> 00:01:43,710 >> Pozrime sa teraz, či tento nový Vykonávaní stavebných prác. 36 00:01:43,710 --> 00:01:46,510 Poďme zachrániť, zostaviť, a spustiť tento program. 37 00:01:46,510 --> 00:01:50,640 Uistite sa sigma 1 bodka lomítko sigma 1. 38 00:01:50,640 --> 00:01:52,900 A poďme poskytne mu rovnaké čísla ako predtým. 39 00:01:52,900 --> 00:01:55,520 2, ktorý by mal snáď mi dať tri. 40 00:01:55,520 --> 00:01:58,970 Poďme jej poskytli 3, ktoré by snáď dať mi šesť. 41 00:01:58,970 --> 00:02:03,480 A poďme konečne poskytne mu 50, ktorá mi naozaj dáva 1275. 42 00:02:03,480 --> 00:02:06,130