Mat*_*tus 0 python recursion list
我有一个我无法真正解决的问题,我想是因为我不太了解递归......但我有这个功能需要实现。
def elements(num, multiplier, add, limiter) -> List[int]:
Run Code Online (Sandbox Code Playgroud)
num 是一个数字,您乘以乘数,然后加上数字 add...然后您将追加数字 num 直到它大于限制器。
例如
(5, 3, 1, 20) will give [5, 16]
(5, 3, 1, 5) will give []
(4, -2, -2, 74) will give [4, -10, 18, -38]
Run Code Online (Sandbox Code Playgroud)
我不能使用任何循环,所以没有 for cycle 或 while 循环......或任何包含循环的东西(总和,最小值,最大值......等等)
我写了这个,我知道这很愚蠢,但我真的不明白递归是如何工作的……这就是我来这里的原因,因为我从代码中学到了最好的东西
def first_elements(first, multiplier, addend, limit):
result = []
if first > limit:
return []
multiplied,_,_,_ = first_elements(first * multiplier + addend, multiplier, addend, limit)
if multiplied > limit:
return []
result.append(first)
result.append(multiplied)
Run Code Online (Sandbox Code Playgroud)
像这样的东西?
def solve(first, multiplier, addend, limit):
if limit <= first:
return []
return [first] + solve(first * multiplier + addend, multiplier, addend, limit)
print(solve(4, -2, -2, 74)) # prints [4, -10, 18, -38]
Run Code Online (Sandbox Code Playgroud)