>> LUIDSPREKER 1: In dat laatste versie van het sigma, ik uitgevoerd wat ik zou noemen
een iteratieve oplossing, waarbij ik gebruik gemaakt van een voorwaartse lus te tellen alle
getallen tussen 1 en m, daarna retourneren van de som.
>> Maar het blijkt dat we kunnen een ander gebruiken techniek om dezelfde uitvoering
functie, een techniek bekend als recursie.
Een recursieve functie, om zo te zeggen, is gewoon een die zelf noemt.
Nu, in en van zichzelf, dat kan een probleem worden.
Als een functie gewoon zichzelf noemt die noemt zichzelf dat zelf noemt,
dat proces zou ooit bot eindigen.
Maar zolang we hebben een zogenaamd base case, een aandoening die ervoor zorgt
dat in sommige situaties die we niet bellen onszelf, dat proces van anders
oneindige looping moet ophouden.
>> Laten we nu herimplementeren sigma als volgt.
Als n kleiner is dan of gelijk aan 0, ik gewoon, en enigszins willekeurig,
ga terug 0.
Anders wat ik ga doen is eigenlijk berekenen sigma voor de positieve int
dat ik heb ingeleverd.
>> Nu, wat is sigma van m?
Wel, sigma van m is, natuurlijk de som van 1 omhoog door m..
Maar als we er over nadenken de andere kant op, het is gewoon de som van m plus m
minus 1 plus m minus 2 enzovoort, helemaal naar beneden tot 1.
Dus in die zin, het lijkt erop dat Ik kon gewoon terug m plus.
>> En dan moet ik m minus 1 plus m minus 2.
Maar ik heb een functie die kan geven me precies dat antwoord, namelijk
sigma M minus 1.
>> Nu, ik bellen op deze manier niet lijkt het beste idee.
Want als sigma belt sigma waarin wordt opgeroepen sigma die sigma belt, u
zou denken dat dit proces zou je nooit eindigen.
Maar dat is waarom we de zogenaamde base geval de bovenkant van deze functie.
De als voorwaarde dat controleert als m minder dan of gelijk aan 0 Ik ga niet
om mezelf te bellen.
Ik ga in plaats daarvan gaat terug 0, wat beurt zal worden toegevoegd aan de
vorige nummers die ik heb het optellen up, deze daarmee te stoppen
anders oneindig proces.
>> Laten we nu zien of dit nieuwe implementatie werkt.
Laten we het redden, compileren, en Dit programma starten.
Maak sigma 1 dot slash sigma 1.
En laten we voorzien van de dezelfde nummers als voorheen.
2, dat moet hopelijk geef me 3.
Laten we te voorzien van 3, die hopelijk geef me 6.
En laten we tenslotte te voorzien van 50, die inderdaad geeft me 1275.