python中非常基本的递归

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)

faf*_*afl 5

像这样的东西?

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)