Il classico esempio di ricorsione comporta fattoriali informatiche . Un fattoriale è il prodotto di un dato numero intero positivo moltiplicato per tutti i numeri interi minori. Il fattoriale di 5 è 5 * 4 * 3 * 2 * 1 , il fattoriale di 4 è 4 * 3 * 2 * 1 e così via . Il fattoriale di qualsiasi numero è uguale a quel numero moltiplicato per il fattoriale del numero immediatamente inferiore . In altre parole , fattoriale ( 5) è uguale a 5 * fattoriale ( 4 ) , fattoriale ( 4) è uguale a 4 * fattoriale ( 3) e così via, quindi una semplice funzione fattoriale potrebbe essere scritta come :
int fattoriale ( int n ) {return n * fattoriale (n - 1) ; }
Base caso
Il problema con questa semplice funzione , tuttavia , è che non ha nessun caso base , o condizione di dire che quando fermarsi. Così com'è , la funzione che continuerà a chiamarsi quando n raggiunto lo zero ed oltre in numeri negativi , tornando fattoriali senza senso . In realtà , una funzione fattoriale ha bisogno di fermarsi quando n = 1 , quindi una vera e propria funzione fattoriale può essere scritto come :
int fattoriale ( int n ) {if ( n == 1) { return 1; } else {return n * fattoriale (n - 1) ; } }
In inglese, la funzione prende in esame il numero passato come parametro e , se il numero è 1 , restituisce 1 . In caso contrario, la funzione restituisce il numero moltiplicato per il fattoriale del numero meno uno.
Programma Stack
Tutti i programmi ricorsivi devono avere un punto di fondo , o di base caso in cui l'operazione è talmente banale che una risposta può essere restituito direttamente . Ricorsione funziona aggiungendo , o spingendo , e la rimozione , o popping , singoli fotogrammi verso e da una struttura di dati nota come stack programma . C'è solo una quantità limitata di spazio sullo stack del programma, così , senza un caso base , un programma ricorsivo sarebbe semplicemente continuando in esecuzione fino a quando lo stack overflow.
Pro e contro
< br
ricorsione > è difficile capire perché non è intuitiva e può apparire , a prima vista , di coinvolgere logica circolare o false. Secondo IBM , la ricorsione è raramente usato dai programmatori di linguaggi di programmazione - che non indicano una sequenza esplicita di passaggi da eseguire - perché credono che è lento e lo spazio rifiuti . Tuttavia , se attuato correttamente , la ricorsione è una tecnica di programmazione potente che può semplificare alcune attività di programmazione .
Programmazione © www.354353.com