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

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/49730d6a-e3e6-425f-8090-c43dc1ae1c66/Untitled.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/2b8212ef-0e64-4735-85a5-65108f20530f/Untitled.png

Metodo generale

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

Osservazioni: