Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Vedi alla voce “ricorsione„
Definizione
● La ricorsione è il meccanismo di
programmazione in cui una funzione fa al
suo interno una chiamata a se stessa.
● Ad ogni chiamata si semplificano/riducono i
dati, finché ad un certo punto si arriva ad
uno dei casi di base
L'idea
● La funzione ricorsiva sa risolvere direttamente solo
casi particolari di un problema detti casi di base: se
viene invocata passandole dei dati che costituiscono
uno dei casi di base, allora restituisce un risultato
● Se invece viene chiamata passandole dei dati che
non costituiscono uno dei casi di base, allora
chiama se stessa (passo ricorsivo) passando dei dati
semplificati/ridotti
Il principio di induzione
● Il principio d'induzione si usa
per provare che una proprietà è
valida per tutti i numeri interi.
● L'idea intuitiva alla sua base è
l'“effetto domino„: affinché le
tessere da domino disposte lungo
una fila cadano tutte sono
sufficienti due condizioni:
– che cada la prima tessera
– che ogni tessera sia posizionata in
modo tale che cadendo provochi la
caduta della successiva.
Divide et impera
Il fattoriale
int fattoriale(int n)
● Si definisce
{
fattoriale di un
int tot = 1;
numero naturale n, cin >> n;
indicato con n!, il for(int i=1;i<=n;i++)
prodotto dei numeri {
interi positivi tot *= i;
minori o uguali a }
tale numero. }
Il fattoriale (ricorsivo)
int fatt(int n)
{
if (n<=1)
return 1; //Caso di base
else
return n * fatt(n1); //Passo ricorsivo
}
I numeri di Fibonacci
● È una successione di
numeri interi positivi
in cui ciascun numero
è la somma dei due
precedenti e i primi
due termini della
successione sono per
definizione F1=1 e
F2=1.
L'algoritmo ricorsivo per F
int fib(int x) {
if (x == 0)
return 0;
if (x == 1)
return 1;
return fib(x1)+fib(x2);
}
Esercizio
● Scrivete un programma che sommi gli
elementi di un array usando una funzione
ricorsiva
This work is licensed under a Creative Commons
AttributionShareAlike 3.0 Unported License.
It makes use of the works of Kelly Loves Whales and Nick
Merritt