1 00:00:00,000 --> 00:00:03,110 >> ZVUČNIK 1: U tom posljednjem verziji sigma, provodi sam ono što bih nazvao 2 00:00:03,110 --> 00:00:06,570 iterativno rješenje, pri čemu sam se naprijed petlje brojati do sve 3 00:00:06,570 --> 00:00:09,720 broj između 1 i m, nakon toga povratka sumu. 4 00:00:09,720 --> 00:00:12,560 >> No, ispostavilo se da možemo koristiti još jedan Tehnika za provedbu iste 5 00:00:12,560 --> 00:00:15,120 funkcija, tehnika poznat kao rekurzije. 6 00:00:15,120 --> 00:00:19,360 Rekurzivna funkcija, da se tako izrazim, je jednostavno onaj koji sebe naziva. 7 00:00:19,360 --> 00:00:21,290 Sada, samo po sebi, da je bi mogao biti problem. 8 00:00:21,290 --> 00:00:24,500 Ako funkcija jednostavno sebe naziva koji sebe naziva koja sebe naziva, 9 00:00:24,500 --> 00:00:26,080 Taj proces bi mogao Bot ikada završiti. 10 00:00:26,080 --> 00:00:30,490 Ali tako dugo dok su tzv osnovni scenarij, stanje koje osigurava 11 00:00:30,490 --> 00:00:34,930 da u nekim situacijama ne zovu sami, da proces inače 12 00:00:34,930 --> 00:00:37,070 beskonačna petlje treba prestati. 13 00:00:37,070 --> 00:00:39,180 >> Idemo sada reimplement Sigma kako slijedi. 14 00:00:39,180 --> 00:00:43,810 Ako je n manji od ili jednak 0, sam jednostavno, a ponekad proizvoljno, 15 00:00:43,810 --> 00:00:45,670 će vratiti 0.. 16 00:00:45,670 --> 00:00:49,370 Inače ono što ću učiniti je zapravo izračunati Sigma za pozitivnu int 17 00:00:49,370 --> 00:00:50,460 da sam predao. 18 00:00:50,460 --> 00:00:52,050 >> Sada, ono što je sigma od m? 19 00:00:52,050 --> 00:00:55,480 Pa, Sigma M je, naravno, suma od 1 do preko m.. 20 00:00:55,480 --> 00:00:58,820 No, ako mislimo o tome drugi put, to je jednostavno zbroj m plus m. 21 00:00:58,820 --> 00:01:02,560 minus 1 plus m minus 2 i tako dalje, pa sve do jednog. 22 00:01:02,560 --> 00:01:08,080 Dakle, u tom smislu, čini se da Ja jednostavno mogao vratiti M PLUS. 23 00:01:08,080 --> 00:01:10,210 >> I onda moram m minus 1 plus 2 m minus. 24 00:01:10,210 --> 00:01:13,470 Ali imam funkciju koja može dati mene upravo to odgovor, naime 25 00:01:13,470 --> 00:01:16,340 sigma m bila minus jedan. 26 00:01:16,340 --> 00:01:19,670 >> Sada, ja osobno zvati na ovaj način ne izgledati kao najbolja ideja. 27 00:01:19,670 --> 00:01:22,610 Jer ako sigma poziva sigma koja poziva sigma koja poziva sigma, što 28 00:01:22,610 --> 00:01:24,480 mislim da bi se taj proces možda ne bi nikada završiti. 29 00:01:24,480 --> 00:01:27,720 No, to je razlog zašto smo imali tzv bazu Slučaj na vrhu ove funkcije. 30 00:01:27,720 --> 00:01:31,540 Ako je uvjet koji provjerava da li je m manji ili jednak 0 Neću 31 00:01:31,540 --> 00:01:32,610 sebe nazivaju. 32 00:01:32,610 --> 00:01:37,010 Ja sam, umjesto da se vrate idući 0, što opet će biti dodan 33 00:01:37,010 --> 00:01:39,950 prethodni brojevi koje sam zbrajanjem prema gore, čime se zaustavlja ovo 34 00:01:39,950 --> 00:01:41,740 inače beskonačan proces. 35 00:01:41,740 --> 00:01:43,710 >> Idemo sada vidjeti ako ovaj novi Provedba radi. 36 00:01:43,710 --> 00:01:46,510 Idemo spasiti, sastaviti i pokrenuti ovaj program. 37 00:01:46,510 --> 00:01:50,640 Provjerite Sigma 1 dot slash Sigma 1. 38 00:01:50,640 --> 00:01:52,900 I neka je njegovo opremanje iste brojeve kao i prije. 39 00:01:52,900 --> 00:01:55,520 2, koji se nadamo bi trebao dati mi tri. 40 00:01:55,520 --> 00:01:58,970 Idemo dati ga s 3, koji trebao nadamo daj mi 6. 41 00:01:58,970 --> 00:02:03,480 I neka je konačno dostavi mu 50, što je uistinu daje mi 1275. 42 00:02:03,480 --> 00:02:06,130