ricorsione è un concetto potente nel campo dell'informatica , ma può essere difficile per i neofiti a cogliere . Ricorsione comporta una funzione o metodo invocare ripetutamente se stesso in un contesto diverso fino al raggiungimento di un contesto "base" e restituito. In altre parole , per risolvere un problema , il programma recontexualizes come un problema leggermente diverso . Quando si implementa un algoritmo ricorsivo , sempre in considerazione la forma più semplice del problema e stabilire questo esempio semplificato come un " caso base ", che tutte le altre versioni del problema farà riferimento . Istruzioni
1
Definire l'intestazione di una funzione - il nome della funzione e dei suoi ingressi . Per esempio, una funzione che trova un particolare numero di Fibonacci potrebbe apparire come segue :
fib ( int n ) { }
Qui, la funzione calcola il numero di Fibonacci " ennesimo " nella sequenza .
2
scrivere come la funzione verrà chiamata genericamente . Per esempio, quando si chiama fib ( ) , si utilizzerà un numero intero come argomento e registrare il numero intero che calcola :
int risultato = fib ( x ) ;
3
Definire il " caso base " del vostro problema di ricorsione . Ci possono essere casi multipli di base . Come la sequenza di Fibonacci richiede due numeri , avrete bisogno di due casi di base per implementare la sua soluzione
if ( n == 0 ) return 0; . If ( n == 1) return 1;
< br > 4
Definire il passo ricorsiva del problema ricorsione come una più piccola , versione più semplice dello stesso problema , facendo riferimento all'esempio invocazione dal passo 2. Nel nostro esempio , la sequenza di Fibonacci è una sequenza matematica in cui ciascun numero della riga è la somma dei due precedenti numeri nella sequenza . L'algoritmo per trovare un determinato numero di Fibonacci deve quindi invocare se stessa due volte, una per il numero precedente e una volta per il numero prima del numero precedente :
int result1 = fib ( n-1) ; int result2 = fib ( n - 2) ;
ritorno result1 + result2 ;
5
Mettere insieme la funzione , ad esempio :
fib ( int n ) {if ( n == 0 ) return 0; //caso base 1else if ( n == 1) return 1; //caso base 2
else { //recursive stepint result1 = fib ( n-1) ; int risultato2 = fib (n - 2) ;
ritorno result1 + result2 ; } }
la struttura del " caso base " e " passo ricorsivo " sarà lo stesso per tutte le funzioni ricorsive , se ci possono essere più casi base e lunghi passaggi ricorsivi .