Problemi ricorsione in Java

August 23

Problemi ricorsione in Java


In un programma Java, un metodo iterativo è un metodo che si chiama. metodi ricorsivi possono aiutare i programmatori di progettare un estratto di codice per semplificare un problema. metodi ricorsivi appaiono anche spesso di essere concisi, ma la creazione di una funzione ricorsiva efficace può essere molto impegnativo. Come con loop e altre strutture di controllo in Java, gli sviluppatori devono lavorare attraverso che cosa accadrà quando una funzione ricorsiva esegue. metodi ricorsivi causano una serie di problemi comuni quando non è strutturata in modo corretto.

Problem Solving Fallimento

I programmatori usano metodi ricorsivi per risolvere problemi particolari. Naturalmente un metodo iterativo non fornire funzionalità utile se non risolve il problema è stato progettato. Questo a volte succede quando il programmatore ha scelto di utilizzare una funzione ricorsiva dove non è appropriato. In generale, un metodo iterativo è ideale per le situazioni in cui è necessario per risolvere un problema utilizzando passaggi iterativi. Ogni volta che il metodo viene eseguito, si dovrebbe rendere il problema più semplice e portare il programma di un passo avanti verso risolverlo. Il risultato finale del metodo ricorsivo dovrebbe essere la soluzione al problema, ad esempio localizzare un elemento in un oggetto di raccolta dati.

No End Caso

Al fine di una funzione ricorsiva di lavorare senza ottenere il vostro programma bloccato in un ciclo infinito, deve avere un caso di fine ben definito. Ciò significa che ci deve essere una esecuzione finale, piuttosto che il metodo di esecuzione all'infinito. I programmatori spesso implementano ciò utilizzando istruzioni condizionali all'interno del metodo, come il seguente esempio:
public void doItRecursively (int num) {
if (num <1) return;
altro {
System.out.println (num);
doItRecursively (num / 2);
}}

Per chiamare questa funzione, un programma può utilizzare il seguente codice:
doItRecursively (10);

In questo caso la funzione eseguirà cinque volte, uscire sulla quinta iterazione. Ogni volta che il metodo viene eseguito si avvicina allo scenario fine, che il condizionale istruzione if verifica per. Se il metodo non contiene l'istruzione condizionale, sarebbe iterare all'infinito.

No Recursion

Il problema contatore a un metodo iterativo all'infinito loop è un metodo che non itera affatto. Questo accade anche quando l'istruzione condizionale non è strutturato in modo corretto. Ad esempio, dato il metodo "doItRecursively", il seguente alterato if causerebbe un problema:
if (num> 0) return;

Se il metodo viene chiamato solo con valori interi positivi come parametro, il suo contenuto non potrà mai iterare come punto finale sarà raggiunta subito.

Chiamate metodo non corretto

Se il programmatore chiamando un metodo iterativo non ha una chiara comprensione della sua funzione, si possono utilizzare in un modo che causa iterazione infinita o nessuna iterazione. Ad esempio, il seguente codice condizionale alterato all'interno del metodo potrebbe facilmente essere chiamato modo errato:
if (num <0) return;

Se il metodo viene chiamato solo con i valori dei parametri interi positivi, non potrà mai arrivare a questo punto finale e causerà un ciclo infinito. metodi ricorsivi possono causare molte delle stesse insidie ​​come loop, in modo che non richiedono la pratica per l'effettiva attuazione.