Rekursive algoritmer er disse algoritmene som kan kalle seg selv som en del av løsningen . Disse funksjonene fungerer ofte på problemer som inneholder en rekke identiske sub- problemer, som tre traversering eller fakultet beregning. Gjentatte ganger ringer samme funksjon om og om igjen kan gjøre arbeidet treg, selv om det kan gjøre koding enklere . For å øke gjennomføring hastighet , kan du gjenskape rekursive algoritmer , for eksempel fakultetet algoritmen , inn i en litt mer komplisert iterativ algoritme ved hjelp av sløyfer som utføres mye raskere . Instruksjoner
en
Analyser rekursiv algoritme . I dette eksempelet , vil du bruke den rekursive løsningen for fakultetet problem : en
int fakultet ( int faktisk) {
if ( faktisk == 0 ) {return 1; } else {return faktum * fakultet ( faktisk - 1 ); } }
2
Bestem om noen funksjonsargumentene kan holdes i variabler . I den faktorielle eksempel kan resultatene av den faktorielle være lagret i en variabel " total_factorial " for varigheten av en hvilken som helst iterasjon. Dette eksemplet viser den rekursive fakultetet algoritme og variabelen som skal brukes for den rekursive argument:
int total_factorial = 0 :
3
Bestem en loop struktur . I C + + , for eksempel, fungerer den "mens " loop godt med iterasjoner som har en indeterminant lengde . "For" løkker , på den annen side fungerer godt når en løkke vil gå til en streng varighet , representert ved et helt tall av noe slag. For fakultetet eksempel vil en " for " loop fungere godt : en
int fakultet = 5; int total_factorial = 0;
4
Bestem stanse forhold. Vanligvis, som i den faktorielle eksempel vil rekursjon opphøre når en betingelse er oppfylt . I en interative loop, slik som for loop, hjelper det å vite før hånd . Siden du vet at å finne fakultet til et tall " n " som du vil iterere n - 1 ganger ( unntatt null ) , kan du begynne på en og løpe til fakultetet nummer:
for ( int i = 1 ; i < = fakultetet , i + + ) { if ( i == 1 ) { total_factorial = 1 ;} else { total fakultet * = i; } }