[JAVA] Come si calcola il numero dei record di attivazione?

Pubblicità

OleandroBianco

Nuovo Utente
Messaggi
12
Reazioni
0
Punteggio
25
Buonasera!
Qualcuno può gentilmente spiegarmi come si calcola il numero dei record di attivazione?

Ho capito che quando si chiama una funzione si crea un record di attivazione nel punto più basso dello stack e che esso contiene i parametri formali e le sue variabili locali e che quando la funzione termina il record è cancellato dallo stack, ma in un esercizio del genere

Codice:
int x =16;
int y = f (x);
System.out.println (y);
….
Dove il metodo f corrisponde a:     public static int f(int n) {
                                     if (n = = 1) return 1;
                                     else return n + f (n/2);
                                    }

come si calcola questo record di attivazione??
Grazie per la pazienza :)
 
Buonasera!
Qualcuno può gentilmente spiegarmi come si calcola il numero dei record di attivazione?

Ho capito che quando si chiama una funzione si crea un record di attivazione nel punto più basso dello stack e che esso contiene i parametri formali e le sue variabili locali e che quando la funzione termina il record è cancellato dallo stack, ma in un esercizio del genere

Codice:
int x =16;
int y = f (x);
System.out.println (y);
….
Dove il metodo f corrisponde a:     public static int f(int n) {
                                     if (n = = 1) return 1;
                                     else return n + f (n/2);
                                    }

come si calcola questo record di attivazione??
Grazie per la pazienza :)

Corrisponde al numero di volte che la funzione viene chiamata ricorsivamente. Nel tuo caso, e in tutti i casi con ricorsione di quel tipo, è O(n*logn), ovvero al più saranno n*logn chiamate. Logaritmo in base 2, dimenticavo! Ciao.
 
Pubblicità
Pubblicità
Indietro
Top