Differenza tra ricorsione e iterazione

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 1 Maggio 2024
Anonim
Ricorsione e iterazione - Tutorial coding e programmazione - Video 74
Video: Ricorsione e iterazione - Tutorial coding e programmazione - Video 74

Contenuto


La ricorsione e l'iterazione eseguono ripetutamente entrambe le istruzioni. La ricorsione è quando un'istruzione in una funzione si chiama ripetutamente. L'iterazione avviene quando un ciclo viene eseguito ripetutamente fino a quando la condizione di controllo diventa falsa. La differenza principale tra ricorsione e iterazione è che è a ricorsione è un processo, sempre applicato a una funzione. Il iterazione viene applicato all'insieme di istruzioni che vogliamo eseguire ripetutamente.

  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione

Base per il confrontoricorsioneIterazione
Di baseL'istruzione in un corpo di funzione chiama la funzione stessa.Consente l'esecuzione ripetuta dell'insieme di istruzioni.
FormatoNella funzione ricorsiva, viene specificata solo la condizione di terminazione (caso base).L'iterazione include l'inizializzazione, la condizione, l'esecuzione dell'istruzione all'interno del ciclo e l'aggiornamento (incrementi e decrementi) della variabile di controllo.
fineNel corpo della funzione è inclusa un'istruzione condizionale per forzare la funzione a ritornare senza che venga eseguita la chiamata di ricorsione.L'istruzione di iterazione viene ripetutamente eseguita fino al raggiungimento di una determinata condizione.
CondizioneSe la funzione non converge in una condizione chiamata (caso base), porta a una ricorsione infinita.Se la condizione di controllo nell'istruzione di iterazione non diventa mai falsa, porta a iterazione infinita.
Ripetizione infinitaLa ricorsione infinita può causare l'arresto anomalo del sistema.Il ciclo infinito utilizza ripetutamente i cicli della CPU.
ApplicatoLa ricorsione è sempre applicata alle funzioni.L'iterazione viene applicata alle istruzioni di iterazione o ai "loop".
PilaLo stack viene utilizzato per memorizzare l'insieme di nuove variabili e parametri locali ogni volta che viene chiamata la funzione.Non usa lo stack.
in altoLa ricorsione possiede l'overhead di ripetute chiamate di funzione.Nessun sovraccarico della chiamata di funzione ripetuta.
VelocitàEsecuzione lenta.Veloce nell'esecuzione.
Dimensione del codiceLa ricorsione riduce la dimensione del codice.L'iterazione allunga il codice.


Definizione di ricorsione

C ++ consente a una funzione di chiamarsi nel suo codice. Ciò significa che la definizione della funzione possiede una chiamata di funzione a se stessa. A volte viene anche chiamato "definizione circolare“. L'insieme di variabili e parametri locali utilizzati dalla funzione viene appena creato ogni volta che la funzione si chiama da sé e viene memorizzato nella parte superiore dello stack. Tuttavia, ogni volta che una funzione si chiama da sola, non crea una nuova copia di quella funzione. La funzione ricorsiva non riduce in modo significativo la dimensione del codice e non migliora nemmeno l'utilizzo della memoria, ma fa un po 'rispetto all'iterazione.

Per terminare la ricorsione, è necessario includere un'istruzione select nella definizione della funzione per forzare la funzione a tornare senza dare una chiamata ricorsiva a se stessa. L'assenza dell'istruzione select nella definizione di funzione ricorsiva consentirà alla funzione in ricorsione infinita una volta chiamata.


Comprendiamo la ricorsione con una funzione che restituirà il fattoriale del numero.

int factorial (int num) {int response; if (num == 1) {return 1; } else {answer = factorial (num-1) * num; // chiamata ricorsiva} return (risposta); }

Nel codice sopra, l'istruzione nella parte altrimenti mostra la ricorsione, poiché l'istruzione chiama la funzione factorial () in cui risiede.

Definizione di Iterazione

L'iterazione è un processo di esecuzione ripetuta dell'insieme di istruzioni fino a quando la condizione nell'istruzione di iterazione diventa falsa. L'istruzione di iterazione include l'inizializzazione, il confronto, l'esecuzione delle istruzioni all'interno dell'istruzione di iterazione e infine l'aggiornamento della variabile di controllo. Dopo che la variabile di controllo è stata aggiornata, viene nuovamente confrontata e il processo si ripete, fino a quando la condizione nell'istruzione di iterazione risulta essere falsa. Le istruzioni di iterazione sono "for" loop, "while" loop, "do-while" loop.

L'istruzione iteration non utilizza uno stack per memorizzare le variabili. Pertanto, l'esecuzione dell'istruzione di iterazione è più rapida rispetto alla funzione ricorsiva. Anche la funzione di iterazione non ha l'overhead di chiamate ripetute a funzioni che rendono anche la sua esecuzione più veloce della funzione ricorsiva. L'iterazione termina quando la condizione di controllo diventa falsa. L'assenza di una condizione di controllo nell'istruzione di iterazione può provocare un ciclo infinito o può causare un errore di compilazione.

Comprendiamo l'iterazione relativa all'esempio sopra.

int factorial (int num) {int answer = 1; // necessita di inizializzazione perché può contenere un valore di immondizia prima della sua inizializzazione per (int t = 1; t> num; t ++) // iterazione {answer = answer * (t); ritorno (risposta); }}

Nel codice sopra, la funzione restituisce il fattoriale del numero usando l'istruzione iteration.

  1. La ricorsione è quando un metodo in un programma chiama ripetutamente se stesso mentre, l'iterazione è quando un insieme di istruzioni in un programma viene ripetutamente eseguito.
  2. Un metodo ricorsivo contiene un set di istruzioni, un'istruzione che si chiama e una condizione di terminazione mentre le istruzioni di iterazione contengono inizializzazione, incremento, condizione, set di istruzioni all'interno di un ciclo e una variabile di controllo.
  3. Una dichiarazione condizionale decide la fine della ricorsione e il valore della variabile di controllo decide la fine della dichiarazione di iterazione.
  4. Se il metodo non porta alla condizione di terminazione, entra in una ricorsione infinita. D'altra parte, se la variabile di controllo non porta mai al valore di terminazione, l'istruzione iteration itera all'infinito.
  5. La ricorsione infinita può causare l'arresto anomalo del sistema, mentre l'iterazione infinita consuma i cicli della CPU.
  6. La ricorsione viene sempre applicata al metodo, mentre l'iterazione viene applicata all'insieme di istruzioni.
  7. Le variabili create durante la ricorsione sono archiviate in pila, mentre l'iterazione non richiede una pila.
  8. La ricorsione provoca l'overhead di ripetute chiamate di funzione mentre l'iterazione non ha una funzione di overhead di chiamata.
  9. A causa della funzione di chiamata, l'esecuzione della ricorsione è più lenta, mentre l'esecuzione dell'iterazione è più veloce.
  10. La ricorsione riduce la dimensione del codice, mentre le iterazioni allungano il codice.

Conclusione:

La funzione ricorsiva è facile da scrivere, ma non funzionano bene rispetto all'iterazione, mentre l'iterazione è difficile da scrivere ma le loro prestazioni sono buone rispetto alla ricorsione.