Un uso poco accorto della ricorsione può comportare seri problemi di efficienza dovuti alla ripetizione di calcoli già effettuati

Approccio top-down: la soluzione di un problema viene calcolata a partire dalle soluzioni di problemi più piccoli

Problema: può capitare che uno stesso problema venga risolto un numero esponenziale di volte

Soluzione: programmazione dinamica

L'idea: si risolvono tutte le istanze richieste dal problema partendo dalle più "piccole" e si memorizzano i risultati, in modo che possano essere riutilizzati mano a mano che si risolvono istanze di dimensione superiore

Metodo generale

Si consideri un algoritmo ricorsivo descritto dalle procedure $P_1,...,P_m$ dove $P_1$ è la procedura principale

Osservazioni: