Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako previesť rekurzívne k Iteračné

Rekurzívne algoritmy sú tie algoritmy , ktoré môžete volať seba ako súčasť ich riešenie . Tieto funkcie často pracujú na problémy , ktoré obsahujú množstvo rovnakých čiastkových problémov , ako je priechod stromom alebo faktoriál výpočtu . Opakované volanie rovnakú funkciu znovu a znovu môže pracovať pomaly , aj keď by to mohlo robiť kódovanie jednoduchšie . Ak chcete zvýšiť rýchlosť vykonávania , môžete znova rekurzívne algoritmy , ako je faktoriál algoritmu , do mierne viac komplikované iteratívny algoritmus , pomocou slučiek , ktoré sa majú vykonať oveľa rýchlejšie . Pokyny dovolená 1

Analyzovať rekurzívny algoritmus . V tomto príklade budete používať rekurzívne riešenie pre faktoriálu problému :

int faktoriál ( int skutočnosť ) {

if ( fakt == 0 ) { return 1 ; } else { return skutočnosť * faktoriál ( skutočnosť - 1 ) ; } }
2

Rozhodnite , či nejaké argumenty funkcie môžu byť držané v premenných . V factorial príklade , výsledky faktoriál môžu byť uložené v premennej " total_factorial " pre dobu trvania každej iterácie . Tento príklad ukazuje , rekurzívny algoritmus pre výpočet faktoriálu a premennú použiť pre rekurzívne argumentu :

int total_factorial = 0 :
3

Určte štruktúru slučky . V C + + , napríklad , " , zatiaľ čo " loop funguje dobre s iterácií , ktoré majú indeterminant dĺžku . " V " slučky , na druhej strane , pracuje dobre , keď sa slučka ísť prísne dobu , zastúpené celé číslo nejakého druhu . Pre faktoriálu Napríklad , " pre " bude slučka funguje dobre :

int faktoriál = 5 ; int total_factorial = 0 ;
4

Určite je zastavenie podmienok . Obvykle sa ako v príklade faktoriál , rekurzia sa ukončí , keď je splnená podmienka . V Interative slučke , ako pre sláčiky , je dobré vedieť pred rúk . Vzhľadom k tomu, že pri hľadaní faktoriál čísla " n" , že budete iterácii n - 1 krát ( okrem nuly ) , môžete začať na jednom a potrvá až do faktoriálu čísla :

for ( int i = 1 ; i < = faktoriál , i + + ) { if ( i == 1 ) { total_factorial = 1 ; } else { celkom faktoriál * = i ; } }

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené