1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 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 A рекурсивна функция, така да се каже, е просто един, който нарича себе си. 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 безкрайна примка трябва да се прекрати. 13 00:00:37,070 --> 00:00:39,180 >> Нека сега reimplement Sigma, както следва. 14 00:00:39,180 --> 00:00:43,810 Ако п е по-малко от или равно на 0, съм просто, и в известна степен произволно, 15 00:00:43,810 --> 00:00:45,670 ще върне 0. 16 00:00:45,670 --> 00:00:49,370 Иначе това, което аз ще направя, е всъщност изчисли сигма за положителната INT 17 00:00:49,370 --> 00:00:50,460 че съм бил предаден. 18 00:00:50,460 --> 00:00:52,050 >> Сега, това, което е на сигма m? 19 00:00:52,050 --> 00:00:55,480 Е, сигма т е, разбира се, сумата от 1 до чрез m. 20 00:00:55,480 --> 00:00:58,820 Но ако ние мислим за него по друг начин, това е просто сумата от m плюс m 21 00:00:58,820 --> 00:01:02,560 минус 1 плюс минус m 2 и така нататък, по целия път надолу към 1. 22 00:01:02,560 --> 00:01:08,080 Така че в този смисъл, изглежда, че Бих могъл просто да се върне m плюс. 23 00:01:08,080 --> 00:01:10,210 >> И тогава аз трябва m ​​минус 1 m плюс минус 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 The ако условието, че проверява дали е 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, които трябва да се надяваме да ми даде три. 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