1 00:00:00,000 --> 00:00:03,110 >> ЗВУЧНИК 1: Во што последната верзија на сигма, јас имплементира она што јас би го нарекол 2 00:00:03,110 --> 00:00:06,570 итеративен решение, при што јас се користи напред јамка за да брои до сите 3 00:00:06,570 --> 00:00:09,720 броеви помеѓу 1 и m, потоа враќање на сумата. 4 00:00:09,720 --> 00:00:12,560 >> Но излегува можеме да го користиме друг техника за спроведување на истата 5 00:00:12,560 --> 00:00:15,120 функција, техника познат како рекурзија. 6 00:00:15,120 --> 00:00:19,360 Рекурзивен функција, така да се каже, е едноставно оној кој се нарекува себеси. 7 00:00:19,360 --> 00:00:21,290 Сега, во себе и за себе, дека може да биде проблем. 8 00:00:21,290 --> 00:00:24,500 Ако функцијата едноставно се нарекува кој се нарекува кој себеси се нарекува, 9 00:00:24,500 --> 00:00:26,080 дека процесот би можел да бот некогаш крај. 10 00:00:26,080 --> 00:00:30,490 Но толку долго како што ние се вклучат во т.н. база случај, состојба која обезбедува 11 00:00:30,490 --> 00:00:34,930 дека во некои ситуации ние не се јавите себе, тој процес на друг начин 12 00:00:34,930 --> 00:00:37,070 бесконечна looping треба да престане. 13 00:00:37,070 --> 00:00:39,180 >> Ајде сега reimplement сигма како што следи. 14 00:00:39,180 --> 00:00:43,810 Ако n е помалку од или еднакво на 0, ми едноставно, и на некој начин произволно, 15 00:00:43,810 --> 00:00:45,670 ќе се вратат 0. 16 00:00:45,670 --> 00:00:49,370 Друго што јас ќе одам да направите е, всушност, пресмета сигма за позитивен цел број 17 00:00:49,370 --> 00:00:50,460 дека јас сум бил предаден. 18 00:00:50,460 --> 00:00:52,050 >> Сега, она што е сигма од м? 19 00:00:52,050 --> 00:00:55,480 Па, сигма од m е, се разбира, на сума од 1 до преку m. 20 00:00:55,480 --> 00:00:58,820 Но, ако мислиме за тоа на друг начин, тоа е едноставно збирот на m, плус м 21 00:00:58,820 --> 00:01:02,560 минус 1 плус м минус 2 и така натаму, сите на патот до 1. 22 00:01:02,560 --> 00:01:08,080 Па во таа смисла, се чини дека Јас едноставно би се вратиле m, плус. 23 00:01:08,080 --> 00:01:10,210 >> А потоа ми треба m минус 1 плус минус м 2. 24 00:01:10,210 --> 00:01:13,470 Но имам функција која може да даде мене токму тој одговор, имено 25 00:01:13,470 --> 00:01:16,340 сигма од м минус 1. 26 00:01:16,340 --> 00:01:19,670 >> Сега, нарекувајќи себе си во овој начин не изгледа како најдобра идеја. 27 00:01:19,670 --> 00:01:22,610 Бидејќи ако сигма повици сигма која повикува сигма која повикува сигма, можете 28 00:01:22,610 --> 00:01:24,480 би помислил дека овој процес може да не некогаш крај. 29 00:01:24,480 --> 00:01:27,720 Но тоа е зошто моравме т.н. база случај на врвот на оваа функција. 30 00:01:27,720 --> 00:01:31,540 На ако услов проверува дали m е помалку од или еднакво на 0 Јас не одам 31 00:01:31,540 --> 00:01:32,610 да си се јавам. 32 00:01:32,610 --> 00:01:37,010 Јас сум наместо ќе се врати 0, што за возврат ќе биде додадена на 33 00:01:37,010 --> 00:01:39,950 претходната броеви кои сум бил собирање нагоре, а со тоа запирање на овој 34 00:01:39,950 --> 00:01:41,740 инаку бесконечна процес. 35 00:01:41,740 --> 00:01:43,710 >> Ајде сега да видиме дали овој нов имплементација работи. 36 00:01:43,710 --> 00:01:46,510 Ајде да се спаси, ги собере, и ја извршите оваа програма. 37 00:01:46,510 --> 00:01:50,640 Направи сигма 1 точка намали сигма 1. 38 00:01:50,640 --> 00:01:52,900 И нека си го обезбеди со ист број како и порано. 39 00:01:52,900 --> 00:01:55,520 2, која се надевам дека треба да ми даде 3. 40 00:01:55,520 --> 00:01:58,970 Нека си го обезбеди со 3, кој се надевам дека треба да ми даде 6. 41 00:01:58,970 --> 00:02:03,480 И ајде конечно да го обезбеди со 50, која навистина ми дава 1275. 42 00:02:03,480 --> 00:02:06,130