Dallanan bir özyinelemeyi DP'ye çevirmenin en kısa yolu hatırlamaktır: fonksiyona girerken "bunu daha önce çözdüm mü?" diye sözlüğe bak, çıkarken cevabı sözlüğe yaz. Kodun geri kalanı aynı kalır; çağrı ağacının tekrar eden bütün dalları tek bir okumaya iner.
def best(i, memo):if i >= len(values):return 0if i not in memo:take = values[i] + best(i + 2, memo)skip = best(i + 1, memo)memo[i] = max(take, skip)return memo[i]
i'yi alırsan bir sonrakini atlarsın (i + 2), almazsan sıradakine geçersin. Sözlük olmadan çağrı sayısı her elemanda ikiye katlanır; sözlükle her i bir kez hesaplanır.Aynı çözüm tabloyla, sondan başa ya da baştan sona da yazılır; hatta burada yalnızca son iki değere ihtiyaç olduğu için iki değişken yeter. Önce hatırlayan özyinelemeyi yaz ve doğru olduğunu gör; sadeleştirmek ondan sonra gelir.