pythonds / done with recursion, data type, dynamic programming