1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 1: Tässä uusimmassa versiossa on sigma, olen toteuttanut kutsuisin 2 00:00:03,110 --> 00:00:06,570 iteratiivinen ratkaisu, jossa käytin eteenpäin silmukan laskea kaikki ylös 3 00:00:06,570 --> 00:00:09,720 numeroita välillä 1 ja m, sen jälkeen palaavat summa. 4 00:00:09,720 --> 00:00:12,560 >> Mutta näyttää siltä, ​​voimme käyttää toista tekniikka toteuttaa saman 5 00:00:12,560 --> 00:00:15,120 toiminto, tekniikka kutsutaan rekursio. 6 00:00:15,120 --> 00:00:19,360 Rekursiivinen funktio, niin sanotusti, on vain yksi, joka kutsuu itseään. 7 00:00:19,360 --> 00:00:21,290 Nyt, ja sinänsä, että saattaa olla ongelma. 8 00:00:21,290 --> 00:00:24,500 Jos toiminto yksinkertaisesti kutsuu itseään joka kutsuu itseään joka kutsuu itseään, 9 00:00:24,500 --> 00:00:26,080 että prosessi voi bot koskaan loppua. 10 00:00:26,080 --> 00:00:30,490 Mutta niin kauan kuin meillä kuuluu ns base tapauksessa ehto, joka takaa 11 00:00:30,490 --> 00:00:34,930 että joissakin tilanteissa emme kutsu itsellemme, että prosessi muuten 12 00:00:34,930 --> 00:00:37,070 ääretön looping olisi lopetettava. 13 00:00:37,070 --> 00:00:39,180 >> Katsotaanpa nyt reimplement sigma seuraavasti. 14 00:00:39,180 --> 00:00:43,810 Jos n on pienempi kuin tai yhtä suuri kuin 0, olen yksinkertaisesti, ja hieman mielivaltaisesti, 15 00:00:43,810 --> 00:00:45,670 palaavansa 0. 16 00:00:45,670 --> 00:00:49,370 Muuten mitä aion tehdä, on todella laskea sigma positiivisen int 17 00:00:49,370 --> 00:00:50,460 että olen kulkenut. 18 00:00:50,460 --> 00:00:52,050 >> Nyt, mitä on sigma m? 19 00:00:52,050 --> 00:00:55,480 No, sigma ja m on, tietenkin, summa 1 läpi metriä. 20 00:00:55,480 --> 00:00:58,820 Mutta jos ajattelemme sitä muulla tavalla, se on yksinkertaisesti summa m + m 21 00:00:58,820 --> 00:01:02,560 miinus 1 plus m miinus 2 ja niin edelleen, kaikki alas 1. 22 00:01:02,560 --> 00:01:08,080 Joten siinä mielessä, näyttää siltä, ​​että Voisin yksinkertaisesti palata m +. 23 00:01:08,080 --> 00:01:10,210 >> Ja sitten minä tarvitsen m miinus 1 plus m miinus 2. 24 00:01:10,210 --> 00:01:13,470 Mutta minulla on toiminto, joka voi antaa Itselleni tuo vastaus, eli 25 00:01:13,470 --> 00:01:16,340 sigma m miinus 1. 26 00:01:16,340 --> 00:01:19,670 >> Nyt, kutsuen itseäni tällä tavalla ei tuntua paras idea. 27 00:01:19,670 --> 00:01:22,610 Koska jos sigma kehottaa sigma jossa kehotetaan sigma jossa vaaditaan sigma, voit 28 00:01:22,610 --> 00:01:24,480 Luulisi, että tämä prosessi ehkä koskaan pääty. 29 00:01:24,480 --> 00:01:27,720 Mutta siksi meillä oli ns base tapauksessa yläosassa tätä toimintoa. 30 00:01:27,720 --> 00:01:31,540 Jos ehto, joka tarkistaa, jos m on pienempi tai yhtä suuri kuin 0 En aio 31 00:01:31,540 --> 00:01:32,610 kutsua itseäni. 32 00:01:32,610 --> 00:01:37,010 Olen sen sijaan aio palata 0, joka vuorostaan ​​aiotaan lisätä 33 00:01:37,010 --> 00:01:39,950 edellinen numeroita, että olen ollut yhteenlaskua up, näin pysäytetään tämä 34 00:01:39,950 --> 00:01:41,740 muuten ääretön prosessi. 35 00:01:41,740 --> 00:01:43,710 >> Katsotaanpa nyt nähdä, jos tämä uusi täytäntöönpanoa toimii. 36 00:01:43,710 --> 00:01:46,510 Säästetään, koota ja suorita tämä ohjelma. 37 00:01:46,510 --> 00:01:50,640 Tee sigma 1 dot slash sigma 1. 38 00:01:50,640 --> 00:01:52,900 Ja katsotaanpa antaa sille samat numerot kuin ennen. 39 00:01:52,900 --> 00:01:55,520 2, joka toivottavasti antaa minulle 3. 40 00:01:55,520 --> 00:01:58,970 Katsotaanpa toimitettava sille 3, joka toivottavasti antaa minulle 6. 41 00:01:58,970 --> 00:02:03,480 Ja nyt vihdoin antaa sille 50, joka todellakin antaa minulle 1275. 42 00:02:03,480 --> 00:02:06,130