1. Chiamata di funzione
1.1. Creata istanza
1.2. Allocazione memoria
1.2.1. Parametri
1.2.2. Variabili
1.3. Passaggio del controllo
1.3.1. Chiamante
1.3.2. Chiamata
2. Stack
2.1. Gestione memoria
2.1.1. Stakframe
2.1.1.1. Info chiamata
2.2. LIFO (Last in first out)
2.2.1. Push
2.2.1.1. Inserimento
2.2.2. Pop
2.2.2.1. Prelievo
2.2.3. OVERFLOW
2.3. Stack Pointer
2.3.1. Indirizzo
2.3.1.1. Stackframe
2.3.1.1.1. cima
3. Tail recursive
3.1. ricorsione
3.1.1. ultima op.
3.1.1.1. NO STACK
3.1.1.2. calcoli
3.1.1.2.1. discesa
3.2. Vantaggi
3.2.1. Efficienza
3.2.2. No Overflow
3.2.3. Trasformabili
3.2.3.1. Iterative
3.3. Svantaggi
3.3.1. Difficili
3.3.2. Compatibilità limitata
4. Funzione ricorsiva
4.1. Chiamata a se stessa
4.1.1. DIRETTA
4.2. Altra funzione
4.2.1. INDIRETTA
5. Divide et Impera
5.1. Scomposizione
5.1.1. Dimensione minore
5.1.1.1. Problema elementare
5.1.1.2. Condizione di terminazione
5.1.1.2.1. Processo infinito
5.1.2. Valore
5.1.2.1. Decrease and conquer
5.1.3. Fattore
5.1.3.1. Divide and conquer
5.2. Risoluzione
5.3. Ricostruzione
6. Analisi complessità T(n)
6.1. Equazione alle ricorrenze
6.1.1. D(n)
6.1.1.1. divisione
6.1.2. C(n)
6.1.2.1. ricombinazione
6.1.3. T(n')
6.1.3.1. ricorsione
6.2. T(n) = D(n) + a*T(n/b) + C(n)
6.3. T(n) = D(n) + Ʃ T(n-k) + C(n)
6.4. Metodo Unfolding
6.4.1. Limite sup. lasco O
7. Non Tail recursive
7.1. ricorsione
7.1.1. No ultima op.
7.1.1.1. USO STACK
7.1.1.2. Calcoli
7.1.1.2.1. risalita