>> SPEAKER 1: I den sista versionen av sigma, genomfört jag vad jag skulle kalla
en iterativ lösning, som innebär att jag använde en framåt slinga för att räkna upp alla de
tal mellan 1 och m, därefter vänder summan.
>> Men det visar sig att vi kan använda en annan teknik för att genomföra samma
funktion, en teknik känd som rekursion.
En rekursiv funktion, så att säga, är helt enkelt en som kallar sig.
Nu, i och för sig, att kan vara ett problem.
Om en funktion kallar sig helt enkelt som kallar sig som kallar sig,
den processen kan bot någonsin sluta.
Men så länge vi har en så kallad basfall, ett tillstånd som säkerställer
att i vissa situationer som vi inte kallar oss själva, att processen för annars
oändlig looping bör upphöra.
>> Låt oss nu reimplement sigma enligt följande.
Om n är mindre än eller lika med 0, jag är helt enkelt, och något godtyckligt,
kommer att återvända 0.
Else vad jag ska göra är att faktiskt beräkna sigma för positiva int
att jag har gått i arv.
>> Nu, vad är sigma av m?
Tja, är sigma av m, naturligtvis, summan av 1 upp genom m..
Men om vi tänker på det på annat sätt, det är helt enkelt summan av m plus m
minus 1 plus m minus 2 och så vidare, ända ned till 1.
Så i den meningen, verkar det som Jag kunde helt enkelt tillbaka m plus.
>> Och då behöver jag m minus 1 plus 2 m minus.
Men jag har en funktion som kan ge mig just det svaret, nämligen
sigma m minus 1.
>> Nu, kalla mig själv på detta sätt inte verka som den bästa idén.
För om sigma kallar sigma som kräver sigma vilka samtal sigma, du
skulle tro att denna process kanske aldrig sluta.
Men det är därför vi hade den så kallade bas fall på toppen av denna funktion.
Den om tillstånd som kontrollerar om m är mindre än eller lika med 0 Jag tänker inte
att kalla mig.
Jag är i stället kommer att återvända 0, vilket i sin tur kommer att läggas till i
tidigare siffror som jag har summerings upp och på så sätt stoppa detta
annars oändlig process.
>> Låt oss nu se om denna nya genomförande fungerar.
Låt oss spara, sammanställa och köra programmet.
Gör sigma 1 dot slash sigma 1.
Och låt oss lämna den med samma nummer som tidigare.
2, vilket ska förhoppningsvis ge mig 3.
Låt oss ge det 3, vilket ska förhoppningsvis ge mig 6.
Och låt oss äntligen förse den med 50, vilket verkligen ger mig 1275.