Prof. G. Zavattaro 17 Luglio 2009 Scienze di Internet, Università di Bologna Algoritmi e Strutture Dati Esercizio 1. [11 punti] Valutare la complessità computazionale della seguente procedura ricorsiva utilizzando sia il metodo iterativo che il Master Theorem (se possibile). La costante a è un intero maggiore di 1. Il costo computazionale della procedura dipende da a? Fa (n) begin if n ≤ a then return a else return a∗Fa (n/a) endif end Esercizio facoltativo [4 punti]. Cosa calcola Fa (n)? Esercizio 2. [11 punti] Data una sequenza di numeri interi (x1 , ..., xn ) diciamo che (xi , xi+1 ) sono una coppia di numeri consecutivi se xi = xi+1 + 1. Ad esempio nella sequenza (12, 13, 24, 25, 26, 35, 67) ci sono 3 coppie di numeri consecutivi: (12, 13), (24, 25) e (25, 26). Scrivere un algoritmo ricorsivo che utilizzi la tecnica divide-et-impera e che calcoli quante coppie di numeri consecutivi sono contenute in una sequenza di n numeri interi x1 , ..., xn ricevuta in input. Valutare in ordine di grandezza il costo computazionale dellalgoritmo proposto. Esercizio 3. [11 punti] Descrivere in pseudo-codice una procedura ricorsiva che, preso in input il puntatore T alla radice di un albero binario, restituisca il numero di nodi a distanza pari dalla radice. Discutere il costo computazionale della soluzione proposta. Vietato usare variabili globali.