結果 : which dynamic programming approach using recursion and memoization to solve subproblems