Costo algoritmo ricorsivo

Fede5...
Buongiorno, qualcuno mi sa aiutare con il seguente esercizio?
Determinare l'ordine di grandezza del costo in tempo in termini di operazioni aritmetiche della seguente funzione:
int pippo(int n){
int i;
if (n <= 3)
   return 1;
else
 if(n > 333)
 i = n/2;
 return 3*pippo(i)+pippo(i)+pippo(i)+n*i;
 }
else
 return pippo(n-3)+9;
}


dire che l'algoritmo ha tempo d'esecuzione definito da
$ T(n)={ ( O(1)\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad n<= 3 ) ,( 3T(n/2)+O(1)\quad\quad n>= 333 ),( T(n-3)+O(1)\quad ):} $
è corretto?

Grazie mile!

Risposte
apatriarca
La condizione \(n \ge 333\) dovrebbe essere \(n > 333\) in base al codice della funzione, ma mi sembra per il resto corretto.

EDIT: Suppongo sia tuttavia in qualche modo richiesto di risolvere tale equazione di ricorrenza. Qualche idea su come procedere?

Fede5...
Grazie mille, a questo punto risolverei l'equazione di ricorrenza con il teorema dell'esperto!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.