>> SPEAKER 1: I den sidste udgave af sigma, jeg implementeret hvad jeg ville kalde
en iterativ løsning, hvor jeg brugte en frem loop at tælle op alle
tal mellem 1 og m, derefter returnere sum.
>> Men det viser sig, at vi kan bruge en anden teknik til at gennemføre den samme
funktion, en teknik kendt som rekursion.
En rekursiv funktion, så at sige, er simpelthen en, der kalder sig selv.
Nu, i sig selv, at kan være et problem.
Hvis en funktion kalder simpelthen selv som kalder sig selv som kalder sig selv,
at processen kan bot nogensinde ender.
Men så længe vi inkluderer et såkaldt base case, en tilstand, der sikrer
at der i nogle situationer vil vi ikke kalde os, at processen ellers
uendelig looping bør ophøre.
>> Lad os nu reimplement sigma som følger.
Hvis n er mindre end eller lig med 0, I er enkelt, og noget arbitrært
kommer til at vende tilbage 0.
Else hvad jeg har tænkt mig at gøre, er faktisk beregne sigma for den positive int
at jeg har været afleveret.
>> Nu, hvad er sigma af m?
Nå, sigma af m er naturligvis summen af ​​1 op gennem m..
Men hvis vi tænker over det den anden vej, det er simpelthen summen af ​​m plus m
minus 1 plus m minus 2 og så videre, hele vejen ned til 1.
Så i den forstand, ser det ud til, at Jeg kunne blot returnere m plus.
>> Og så er jeg nødt m minus 1 plus m minus 2.
Men jeg har en funktion, der kan give mig netop svaret, nemlig
sigma af m minus 1.
>> Nu kalde mig selv på denne måde ikke synes som den bedste idé.
Fordi hvis sigma kalder sigma som opfordrer sigma som opfordrer sigma, du
ville synes, at denne proces måske aldrig ender.
Men det er derfor, vi havde den såkaldte bund tilfælde på toppen af ​​denne funktion.
Den hvis betingelse, tjekker, om m er mindre end eller lig med 0 Jeg har ikke tænkt mig
at kalde mig selv.
Jeg i stedet kommer til at returnere 0, hvilket igen vil blive føjet til
tidligere numre, som jeg har været opsummering op, og derved forhindre dette
ellers uendelig proces.
>> Lad os nu se, om det nye implementering fungerer.
Lad os gemme, kompilere, og køre dette program.
Gør sigma 1 prik skråstreg sigma 1.
Og lad os give den de samme tal som før.
2, som skulle forhåbentlig give mig 3.
Lad os give det 3, hvilket vil forhåbentlig give mig 6.
Og lad os endelig give det 50, der faktisk giver mig 1.275.