Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza Informatica >> Programmazione >> Computer Programming Languages >> .

Come convertire ricorsiva a iterativa

algoritmi ricorsivi sono quegli algoritmi che si possono chiamare come parte della loro soluzione . Queste funzioni lavorano spesso su problemi che contengono una serie di sotto-problemi identici , come attraversamento di alberi o di calcolo fattoriale . Chiamando ripetutamente la stessa funzione più e più può rendere il lavoro lento, anche se potrebbe rendere più semplice la codifica . Per aumentare la velocità di esecuzione , è possibile ricreare algoritmi ricorsivi , come l'algoritmo fattoriale , in una leggermente più complicato algoritmo iterativo che utilizza linee che verranno eseguiti molto più velocemente . Istruzioni
1

Analizzare l'algoritmo ricorsivo . In questo esempio , si utilizzerà la soluzione ricorsiva per il problema fattoriale :

int fattoriale ( int fatto ) {

if ( fatto == 0 ) { return 1; } else { fatto ritorno * fattoriale ( fatto - 1) ; } }
2

decidere se eventuali argomenti delle funzioni possono essere tenuti in variabili . Nell'esempio fattoriale , i risultati del fattoriale possono essere memorizzati in una variabile " total_factorial " per la durata di ogni iterazione . Questo esempio mostra l'algoritmo fattoriale ricorsivo e la variabile da utilizzare per l'argomento ricorsiva :

int total_factorial = 0 :
3

Determinare una struttura ad anello . In C + + , ad esempio , il ciclo "while " funziona bene con iterazioni che hanno una lunghezza non determinanti . " Per " loops , invece , funziona bene quando un ciclo andrà per una durata rigorosa, rappresentato da un numero intero di qualche tipo . Per l' esempio del fattoriale , un ciclo "for " funziona bene :

int fattoriale = 5; int total_factorial = 0;
4

Determinare le condizioni di arresto . Solitamente , come nell'esempio fattoriale , la ricorsione terminerà quando viene soddisfatta una condizione . In un ciclo interative , come ad esempio il ciclo for , è utile conoscere prima mano. Dal momento che si sa che nel trovare il fattoriale di un numero " n" che si iterare n- 1 volte (escluso lo zero ) , è possibile avviare in una sola e correre fino a quando il numero fattoriale :

for (int i = 1; i < = fattoriale , i + + ) {if ( i == 1) { total_factorial = 1; } else { totale fattoriale * = i; } }

 

Programmazione © www.354353.com