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テ、, 窶銀€久oimme 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テ、, 窶銀€菊ttテ、 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 窶銀€蟻iotaan 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