1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 1: V zadnji različici sigma, sem izvajal, kaj bi rekel 2 00:00:03,110 --> 00:00:06,570 ponavljajoč rešitev, pri čemer sem uporabil naprej zanka za štetje do vseh 3 00:00:06,570 --> 00:00:09,720 številke med 1 in m, nato vrnitvijo vsoto. 4 00:00:09,720 --> 00:00:12,560 >> Ampak se je izkazalo, da lahko uporabite drugo Tehnika za izvajanje istega 5 00:00:12,560 --> 00:00:15,120 funkcijo, tehnika znan kot rekurzijska. 6 00:00:15,120 --> 00:00:19,360 Rekurzivna funkcija, če se tako izrazim, je preprosto tista, ki sebe imenuje. 7 00:00:19,360 --> 00:00:21,290 Zdaj, samo po sebi, da lahko problem. 8 00:00:21,290 --> 00:00:24,500 Če funkcija zgolj sebe imenuje, ki se zahteva, ki sebe imenuje, 9 00:00:24,500 --> 00:00:26,080 Ta proces bi lahko bot kdaj konec. 10 00:00:26,080 --> 00:00:30,490 Toda tako dolgo, kot smo vključujejo tako imenovane osnovna, pod pogojem, da zagotavlja 11 00:00:30,490 --> 00:00:34,930 da se v nekaterih primerih ne zahtevajo sami, da proces drugače 12 00:00:34,930 --> 00:00:37,070 neskončna zanka bi bilo treba ukiniti. 13 00:00:37,070 --> 00:00:39,180 >> Pojdimo zdaj reimplement sigma kot sledi. 14 00:00:39,180 --> 00:00:43,810 Če je n manjša ali enaka 0, sem preprosto in nekoliko arbitrarno, 15 00:00:43,810 --> 00:00:45,670 dogaja, da se vrnete 0. 16 00:00:45,670 --> 00:00:49,370 Else kaj bom storiti, je dejansko izračunati sigma za pozitivni int 17 00:00:49,370 --> 00:00:50,460 da sem bil izročil. 18 00:00:50,460 --> 00:00:52,050 >> Zdaj, kaj je sigma od m? 19 00:00:52,050 --> 00:00:55,480 No, sigma m je seveda vsota 1 skozi m. 20 00:00:55,480 --> 00:00:58,820 Ampak, če pomislim na drug način, to je preprosto vsota m plus m 21 00:00:58,820 --> 00:01:02,560 minus 1 plus m minus 2 in tako naprej, vse tja do 1. 22 00:01:02,560 --> 00:01:08,080 Torej, v tem smislu se zdi, da Lahko bi preprosto vrniti m plus. 23 00:01:08,080 --> 00:01:10,210 >> In potem rabim m minus 1 plus minus m 2. 24 00:01:10,210 --> 00:01:13,470 Ampak jaz imam funkcijo, ki lahko dajo me prav ta odgovor, in sicer 25 00:01:13,470 --> 00:01:16,340 sigma iz m minus 1. 26 00:01:16,340 --> 00:01:19,670 >> Zdaj, sam kliče na ta način ne Zdi se, kot najboljši ideji. 27 00:01:19,670 --> 00:01:22,610 Ker če sigma poziva sigma, ki zahteva sigma ki poziva sigma, si 28 00:01:22,610 --> 00:01:24,480 bi si mislil, da bo ta proces morda ne bo nikoli konec. 29 00:01:24,480 --> 00:01:27,720 Ampak to je, zakaj smo imeli tako imenovano bazo Zadeva na vrhu te funkcije. 30 00:01:27,720 --> 00:01:31,540 Če je pogoj, da preveri, če je m manjša ali enaka 0 ne bom 31 00:01:31,540 --> 00:01:32,610 da sem poklical. 32 00:01:32,610 --> 00:01:37,010 Jaz sem namesto vrača 0, ki pa se dogaja, da se doda 33 00:01:37,010 --> 00:01:39,950 prejšnje številke, da sem bil seštevanjem navzgor, s čimer se zaustavi to 34 00:01:39,950 --> 00:01:41,740 drugače neskončen proces. 35 00:01:41,740 --> 00:01:43,710 >> Poglejmo, če je ta nova izvajanje dela. 36 00:01:43,710 --> 00:01:46,510 Rešimo, pripravijo in zagon tega programa. 37 00:01:46,510 --> 00:01:50,640 Naredite sigma 1 pika poševnica sigma 1. 38 00:01:50,640 --> 00:01:52,900 In naj ji zagotovi iste številke kot prej. 39 00:01:52,900 --> 00:01:55,520 2, ki naj bi upajmo, da mi je dal 3. 40 00:01:55,520 --> 00:01:58,970 Dajmo ji priskrbijo 3, ki bi mi morala dati upajmo 6. 41 00:01:58,970 --> 00:02:03,480 In kaj je to končno zagotovi 50, kar mi res daje 1275. 42 00:02:03,480 --> 00:02:06,130