Sei sulla pagina 1di 11

Ricorsione

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(n­1); //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(x­1)+fib(x­2);
}
Esercizio
● Scrivete un programma che sommi gli 
elementi di un array usando una funzione 
ricorsiva
This work is licensed under a Creative Commons 
Attribution­ShareAlike 3.0 Unported License.
It makes use of the works of Kelly Loves Whales and Nick 
Merritt