In un programma Java , un metodo iterativo è un metodo che si chiama . Metodi ricorsivi possono aiutare i programmatori a progettare una porzione di codice per semplificare un problema. Metodi ricorsivi anche spesso sembrano essere conciso , 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 quello che accadrà quando una funzione ricorsiva esegue . Metodi ricorsivi causano una serie di problemi comuni quando non strutturato correttamente . Problem Solving Failure
programmatori usano metodi ricorsivi per risolvere problemi particolari . Naturalmente un metodo ricorsivo non fornirà funzionalità utile se non risolve il problema che è stato progettato per . Ciò talvolta accade quando il programmatore ha scelto di utilizzare una funzione ricorsiva dove non è appropriato . In generale , un metodo iterativo è l'ideale per situazioni in cui avete bisogno per risolvere un problema con fasi iterative . Ogni volta che il metodo viene eseguito , dovrebbe rendere il problema più semplice e portare il programma di un passo più vicino a risolverlo. Il risultato finale del metodo ricorsivo deve essere la soluzione al tuo problema , per esempio la localizzazione di un elemento in un oggetto di raccolta dei dati .
No End Caso
per una funzione ricorsiva per lavorare senza ottenere il tuo programma bloccato in un loop infinito , deve avere una causa finale ben definito . Ciò significa che ci deve essere una esecuzione finale , piuttosto che il metodo di esecuzione all'infinito . I programmatori spesso implementano questo usando istruzioni condizionali all'interno del metodo , come nel seguente esempio : public void doItRecursively ( int num) {if (num < 1) return; else { 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 viene eseguito cinque volte , uscendo sulla quinta iterazione . Ogni volta che il metodo viene eseguito si avvicina allo scenario fine, che il condizionale if verifica per . Se il metodo non contiene l'istruzione condizionale , sarebbe iterare all'infinito .
No ricorsione
La questione contatore di un metodo iterativo all'infinito looping è un metodo che non un'iterazione affatto. Questo accade anche quando l'istruzione condizionale non è strutturato correttamente . Ad esempio, dato il metodo " doItRecursively " , la seguente alterato if causerebbe un problema : if ( num > 0 ) return;
Se il metodo viene chiamato solo con valori interi positivi come il parametro , la sua contenuti saranno mai iterare come sarà stato raggiunto subito il punto finale .
metodo non corretto chiamate
Se il programmatore si chiama un metodo ricorsivo non ha una chiara comprensione la sua funzione , che può utilizzare in un modo che causa iterazione senza fine o no iterazione . Ad esempio, il seguente codice condizionale alterato all'interno del metodo potrebbe facilmente essere chiamato in modo non corretto : if (num < 0 ) return;
Se il metodo viene chiamato solo con valori di parametro intero positivo, non potrà mai arrivare a questo punto finale e causerà un loop infinito . Metodi ricorsivi possono causare molte delle stesse insidie come loop , in modo che non richiedono la pratica per l'effettiva attuazione.