appunti3s:ricorsione
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
appunti3s:ricorsione [2018/05/03 16:26] – [Premessa] profpro | appunti3s:ricorsione [2020/06/08 22:20] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | > Torna alla pagina iniziale > [[appunti3s: | ||
+ | |||
+ | ====== Cenni alla ricorsione ====== | ||
+ | ===== Premessa ===== | ||
+ | |||
+ | Un programma che ripete più volte la stessa operazione, __in teoria__, può essere scritto secondo due approcci: | ||
+ | * l' | ||
+ | * la ricorsione | ||
+ | =====Esempio del fattoriale di un intero N ===== | ||
+ | Chi volesse utilizzare l' | ||
+ | * ripetere per //i// da 1 a N | ||
+ | * moltiplicare tra loro tutti i valori di //i// | ||
+ | Chi volesse utilizzare l' | ||
+ | * moltiplicare N * (N-1) | ||
+ | * moltiplicare il risultato precedente per (N-2) | ||
+ | * moltiplicare il risultato precedente per (N-3) | ||
+ | * ... e così via... | ||
+ | * fino a 1 | ||
+ | Nell' | ||
+ | ===== Condizioni ===== | ||
+ | Per risolvere un problema con una ricorsione è necessario: | ||
+ | * esprimere la soluzione del passo generico //i// nei termini del passo precedente (//i-1//), ad esempio: < | ||
+ | * esprimere una condizione di terminazione, | ||
+ | <file cpp 41.cpp> | ||
+ | // calcolo del fattoriale | ||
+ | #include < | ||
+ | int main() | ||
+ | { | ||
+ | int numero, fattoriale=1; | ||
+ | std::cout << " | ||
+ | std::cin >> numero; | ||
+ | |||
+ | for (int i=1; i< | ||
+ | fattoriale = numero*fattoriale; | ||
+ | | ||
+ | std::cout << "Il fattoriale di " << numero << " vale " << fattoriale << std::endl; | ||
+ | return 0; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Questo appena visto era l' | ||
+ | |||
+ | [[olimpiadi: | ||
+ | |||