1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 1: V této poslední verzi sigma, jsem implementoval to, co bych nazval 2 00:00:03,110 --> 00:00:06,570 iterativní řešení, kdy jsem použil vpřed smyčka počítat se všemi 3 00:00:06,570 --> 00:00:09,720 čísla mezi 1 a m, poté vrácení částky. 4 00:00:09,720 --> 00:00:12,560 >> Ale ukazuje se, můžeme použít jiný technika k provedení téhož 5 00:00:12,560 --> 00:00:15,120 funkce, technika známý jako rekurze. 6 00:00:15,120 --> 00:00:19,360 Rekurzivní funkce, abych tak řekl, je prostě ten, který volá sama sebe. 7 00:00:19,360 --> 00:00:21,290 Nyní, samo o sobě, že by mohl být problém. 8 00:00:21,290 --> 00:00:24,500 Je-li funkce jednoduše volá sama sebe, které volá sama sebe, která volá sama sebe, 9 00:00:24,500 --> 00:00:26,080 že proces může Bot někdy skončí. 10 00:00:26,080 --> 00:00:30,490 Ale tak dlouho, jak jsme jsou tzv. referenční případ, stav, který zajišťuje 11 00:00:30,490 --> 00:00:34,930 že v některých situacích se nevolejte sami, že proces jinak 12 00:00:34,930 --> 00:00:37,070 nekonečný smyčkování by měla být zrušena. 13 00:00:37,070 --> 00:00:39,180 >> Pojďme se nyní implementujeme sigma následovně. 14 00:00:39,180 --> 00:00:43,810 Pokud n je menší než nebo rovno 0, jsem jednoduše, a poněkud libovolně, 15 00:00:43,810 --> 00:00:45,670 bude return 0. 16 00:00:45,670 --> 00:00:49,370 Jinak to, co budu dělat, je ve skutečnosti vypočítat Sigma pro pozitivní int 17 00:00:49,370 --> 00:00:50,460 že jsem podal. 18 00:00:50,460 --> 00:00:52,050 >> A teď, co je sigma m? 19 00:00:52,050 --> 00:00:55,480 Tak, sigma m je, samozřejmě, součet 1 až přes m.. 20 00:00:55,480 --> 00:00:58,820 Ale pokud si myslíme, že o tom na druhou stranu, je to prostě suma m m plus 21 00:00:58,820 --> 00:01:02,560 minus 1 plus minus m 2, a tak dále, celou cestu až na 1. 22 00:01:02,560 --> 00:01:08,080 Takže v tomto smyslu se zdá, že Mohl bych jednoduše vrátit M plus. 23 00:01:08,080 --> 00:01:10,210 >> A pak musím m mínus 1 plus minus 2 m. 24 00:01:10,210 --> 00:01:13,470 Ale já mám funkci, která může dát mi přesně ta odpověď, 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 >> Nyní, volat sebe tímto způsobem není Zdá se, jako nejlepší nápad. 27 00:01:19,670 --> 00:01:22,610 Protože pokud sigma volá sigma, který volá sigma, který volá sigma, můžete 28 00:01:22,610 --> 00:01:24,480 by si myslel, že tento proces nemusí nikdy skončit. 29 00:01:24,480 --> 00:01:27,720 Ale to je důvod, proč jsme měli tzv. základny pouzdro na vrcholu této funkce. 30 00:01:27,720 --> 00:01:31,540 Pokud podmínka, která kontroluje, zda m je menší nebo rovno 0 Nehodlám 31 00:01:31,540 --> 00:01:32,610 volat sám. 32 00:01:32,610 --> 00:01:37,010 Já místo toho jít vrátit 0, což pak se bude přidán do 33 00:01:37,010 --> 00:01:39,950 předchozí čísla, která jsem sčítat nahoru, čímž se zastaví tento 34 00:01:39,950 --> 00:01:41,740 jinak nekonečný proces. 35 00:01:41,740 --> 00:01:43,710 >> Podívejme se nyní, zda tento nový Provádění stavebních prací. 36 00:01:43,710 --> 00:01:46,510 Pojďme zachránit, sestavit, a spustit tento program. 37 00:01:46,510 --> 00:01:50,640 Ujistěte se sigma 1 tečka lomítko sigma 1. 38 00:01:50,640 --> 00:01:52,900 A pojďme poskytne mu stejná čísla jako předtím. 39 00:01:52,900 --> 00:01:55,520 2, který by měl snad mi dát tři. 40 00:01:55,520 --> 00:01:58,970 Pojďme jí poskytly 3, které by snad dát mi šest. 41 00:01:58,970 --> 00:02:03,480 A pojďme konečně poskytne mu 50, která mi opravdu dává 1275. 42 00:02:03,480 --> 00:02:06,130