【发布时间】:2021-03-18 15:26:34
【问题描述】:
我对 python 还很陌生,偶然发现了 youtube 上的动态编程课程,我认为这可以帮助我更好地理解这个概念 @here。
现在,我一直在努力理解它......有人有时间解释这段代码的工作方式吗?
该函数将目标总和和一个数字数组作为参数。 该函数应返回一个数组,其中包含与目标数字相加的任意数字组合。
def howSum(targetSum, numbers, memo = {}):
if targetSum in memo : return memo[targetSum]
if targetSum == 0 : return []
if targetSum < 0 : return None
for num in numbers:
remainder = targetSum - num
remainderResult = howSum(remainder, numbers, memo)
if remainderResult != None:
memo[targetSum] = [*remainderResult, num]
return memo[targetSum]
memo[targetSum] = None
return None
原始代码是为 JS 编写的,我将其翻译成 Python,但我遇到了两件事:即:
-
在定义结束时返回语句
-
特别是这一行:
memo[targetSum] = [*remainderResult, num]
有没有我遗漏的概念?
【问题讨论】:
标签: python return memoization