Rekursive algoritmer er de algoritmer, der kan kalde sig selv som en del af deres løsning . Disse funktioner arbejder ofte på problemer , der indeholder en serie af identiske sub- problemer , ligesom træ traversal eller faktoriel beregning . Gentagne gange at kalde den samme funktion igen og igen kan gøre arbejdet langsomt, selvom det kan gøre kodning enklere . At øge udførelse hastighed , kan du genskabe rekursive algoritmer , såsom faktor algoritme , i en lidt mere kompliceret iterativ algoritme, der anvender sløjfer, der vil udføre meget hurtigere . Instruktioner
1
Analyser rekursive algoritme. I dette eksempel vil du bruge den rekursive løsning fakultet problem : Hej
int factorial ( int faktisk) {
if ( faktisk == 0 ) { tilbagevenden 1; } else {return faktum * factorial ( faktisk - 1) ;}}
2
Beslut om nogen funktionsargumenter kan holdes i variabler. I fakultet eksempel kan resultaterne af fakulteten lagres i en variabel " total_factorial " for varigheden af enhver iteration . Dette eksempel viser rekursive faktordesign algoritme og den variable til brug for rekursive argument : Hej
int total_factorial = 0:
3
Bestem en løkke struktur. I C + + , for eksempel ", mens " loop fungerer godt med iterationer , der har en indeterminant længde . "For" løkker på den anden side , fungerer godt, når en løkke vil gå for en streng varighed , repræsenteret ved et heltal af en slags . For fakultet eksempel vil en "for" loop fungerer godt : Hej
int factorial = 5; int total_factorial = 0;
4
Bestem standse forhold. Normalt , som i fakultet eksempel vil rekursion afslutte når en betingelse er opfyldt . I en interative loop, som for-løkken , hjælper det at vide, før hånd. Da du ved, at i finde fakultet af et tal "n ", som du vil gentage n- 1 gange (ekskl. nul) , kan du starte på én og løber frem -fakultet : Hej
for (int i = 1 i < = factorial , i + +) {if (i == 1 ) { total_factorial = 1 ;} else { total factorial * = i ;}}