Estratto del documento

Ricorsione multipla

Quando un metodo invoca se stesso più volte durante la propria esecuzione.

Esempio: il calcolo dei numeri di Fibonacci

Soluzione ricorsiva

Esempio:

public static long recursiveFib(int n) {
    if (n < 1) throw new IllegalArgumentException();
    System.out.println("Inizio recursiveFib(" + n + ")");
    invcount++;
    long f;
    if (n < 3) f = 1;
    else f = recursiveFib(n-1) + recursiveFib(n-2);
    System.out.println("Uscita recursiveFib(" + n + ")");
    return f;
}

Soluzione iterativa

Esempio:

public static long iterativeFib(int n) {
    if (n < 1) throw new IllegalArgumentException();
    long f = 1;
    if (n >= 3) {
        long fib1 = 1;
        long fib2 = 1;
        for (int i = 3; i <= n; i++) {
            f = fib1 + fib2;
            fib2 = fib1;
            fib1 = f;
        }
    }
    return f;
}

Considerazioni sulla ricorsione multipla

Il metodo Fib realizza una ricorsione multipla. La ricorsione multipla va usata con molta attenzione perché può portare a programmi molto inefficienti. Eseguendo il calcolo dei numeri di Fibonacci di ordine crescente si nota che il tempo di elaborazione cresce molto rapidamente (Sono necessarie quasi 3 milioni di invocazioni per calcolare Fib(31)!). Invece, una soluzione iterativa risulta molto più efficiente.

Anteprima
Vedrai una selezione di 1 pagina su 1
Informatica I - la ricorsione multipla Pag. 1
1 su 1
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher enricopava di informazioni apprese con la frequenza delle lezioni di Informatica 1 e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Avanzini Federico.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community