1 00:00:00,000 --> 00:00:03,110 >> SPEAKER 1: I den sista versionen av sigma, genomfört jag vad jag skulle kalla 2 00:00:03,110 --> 00:00:06,570 en iterativ lösning, som innebär att jag använde en framåt slinga för att räkna upp alla de 3 00:00:06,570 --> 00:00:09,720 tal mellan 1 och m, därefter vänder summan. 4 00:00:09,720 --> 00:00:12,560 >> Men det visar sig att vi kan använda en annan teknik för att genomföra samma 5 00:00:12,560 --> 00:00:15,120 funktion, en teknik känd som rekursion. 6 00:00:15,120 --> 00:00:19,360 En rekursiv funktion, så att säga, är helt enkelt en som kallar sig. 7 00:00:19,360 --> 00:00:21,290 Nu, i och för sig, att kan vara ett problem. 8 00:00:21,290 --> 00:00:24,500 Om en funktion kallar sig helt enkelt som kallar sig som kallar sig, 9 00:00:24,500 --> 00:00:26,080 den processen kan bot någonsin sluta. 10 00:00:26,080 --> 00:00:30,490 Men så länge vi har en så kallad basfall, ett tillstånd som säkerställer 11 00:00:30,490 --> 00:00:34,930 att i vissa situationer som vi inte kallar oss själva, att processen för annars 12 00:00:34,930 --> 00:00:37,070 oändlig looping bör upphöra. 13 00:00:37,070 --> 00:00:39,180 >> Låt oss nu reimplement sigma enligt följande. 14 00:00:39,180 --> 00:00:43,810 Om n är mindre än eller lika med 0, jag är helt enkelt, och något godtyckligt, 15 00:00:43,810 --> 00:00:45,670 kommer att återvända 0. 16 00:00:45,670 --> 00:00:49,370 Else vad jag ska göra är att faktiskt beräkna sigma för positiva int 17 00:00:49,370 --> 00:00:50,460 att jag har gått i arv. 18 00:00:50,460 --> 00:00:52,050 >> Nu, vad är sigma av m? 19 00:00:52,050 --> 00:00:55,480 Tja, är sigma av m, naturligtvis, summan av 1 upp genom m.. 20 00:00:55,480 --> 00:00:58,820 Men om vi tänker på det på annat sätt, det är helt enkelt summan av m plus m 21 00:00:58,820 --> 00:01:02,560 minus 1 plus m minus 2 och så vidare, ända ned till 1. 22 00:01:02,560 --> 00:01:08,080 Så i den meningen, verkar det som Jag kunde helt enkelt tillbaka m plus. 23 00:01:08,080 --> 00:01:10,210 >> Och då behöver jag m minus 1 plus 2 m minus. 24 00:01:10,210 --> 00:01:13,470 Men jag har en funktion som kan ge mig just det svaret, nämligen 25 00:01:13,470 --> 00:01:16,340 sigma m minus 1. 26 00:01:16,340 --> 00:01:19,670 >> Nu, kalla mig själv på detta sätt inte verka som den bästa idén. 27 00:01:19,670 --> 00:01:22,610 För om sigma kallar sigma som kräver sigma vilka samtal sigma, du 28 00:01:22,610 --> 00:01:24,480 skulle tro att denna process kanske aldrig sluta. 29 00:01:24,480 --> 00:01:27,720 Men det är därför vi hade den så kallade bas fall på toppen av denna funktion. 30 00:01:27,720 --> 00:01:31,540 Den om tillstånd som kontrollerar om m är mindre än eller lika med 0 Jag tänker inte 31 00:01:31,540 --> 00:01:32,610 att kalla mig. 32 00:01:32,610 --> 00:01:37,010 Jag är i stället kommer att återvända 0, vilket i sin tur kommer att läggas till i 33 00:01:37,010 --> 00:01:39,950 tidigare siffror som jag har summerings upp och på så sätt stoppa detta 34 00:01:39,950 --> 00:01:41,740 annars oändlig process. 35 00:01:41,740 --> 00:01:43,710 >> Låt oss nu se om denna nya genomförande fungerar. 36 00:01:43,710 --> 00:01:46,510 Låt oss spara, sammanställa och köra programmet. 37 00:01:46,510 --> 00:01:50,640 Gör sigma 1 dot slash sigma 1. 38 00:01:50,640 --> 00:01:52,900 Och låt oss lämna den med samma nummer som tidigare. 39 00:01:52,900 --> 00:01:55,520 2, vilket ska förhoppningsvis ge mig 3. 40 00:01:55,520 --> 00:01:58,970 Låt oss ge det 3, vilket ska förhoppningsvis ge mig 6. 41 00:01:58,970 --> 00:02:03,480 Och låt oss äntligen förse den med 50, vilket verkligen ger mig 1275. 42 00:02:03,480 --> 00:02:06,130