>> SPEAKER 1: I den siste versjonen av sigma, implementert jeg det jeg vil kalle
en iterativ løsning, der jeg brukte en frem sløyfe for å telle opp all
tall mellom 1 og m, deretter tilbake summen.
>> Men det viser seg at vi kan bruke en annen teknikk for å implementere den samme
funksjon, en teknikk kjent som rekursjon.
En rekursiv funksjon, så å si, er rett og slett en som kaller seg.
Nå, i seg selv, at kan være et problem.
Hvis en funksjon kaller rett og slett seg selv som kaller seg som kaller seg,
at prosessen kan bot noensinne ende.
Men så lenge som vi inkludere en såkalt basis tilfelle, en tilstand som sikrer
at det i enkelte situasjoner kan vi ikke kalle oss selv, at prosessen med ellers
uendelig looping bør opphøre.
>> La oss nå reimplement sigma som følger.
Hvis n er mindre enn eller lik 0, er jeg rett og slett, og noe tilfeldig,
kommer til å returnere 0.
Else hva jeg kommer til å gjøre er faktisk beregne sigma for den positive int
at jeg har blitt overlevert.
>> Nå, hva er sigma av m?
Vel, sigma for m er, selvfølgelig, summen av 1 og opp gjennom m.
Men hvis vi tenker på det den andre veien, det er rett og slett summen av m pluss m
minus en pluss minus 2 m og så videre, hele veien ned til en.
Så i den forstand, virker det som Jeg kunne bare gå tilbake m pluss.
>> Og da trenger jeg m minus 1 pluss m minus to.
Men jeg har en funksjon som kan gi meg nettopp det svaret, nemlig
sigma av m minus en.
>> Nå kaller meg selv på denne måten ikke virke som den beste ideen.
Fordi hvis sigma kaller sigma som kaller sigma som kaller sigma, du
skulle tro at denne prosessen kanskje aldri ende.
Men det er derfor vi hadde den såkalte basen tilfelle ved toppen av denne funksjon.
Hvis betingelsen som sjekker hvis m er mindre enn eller lik 0 Jeg har ikke tenkt
å kalle meg selv.
Jeg stedet kommer til å returnere 0, som i sin tur kommer til å bli lagt til
tidligere tall som jeg har blitt summere opp, dermed stoppe dette
ellers uendelig prosess.
>> La oss nå se om denne nye implementeringen fungerer.
La oss redde, kompilere, og kjøre dette programmet.
Gjør sigma en prikk slash sigma 1.
Og la oss gi det med samme tallene som før.
2, som skal forhåpentligvis gi meg tre.
La oss gi det tre, som skal forhåpentligvis gi meg seks.
Og la oss endelig gi den med 50, noe som faktisk gir meg 1275.