Very basi c рекурсия в python - PullRequest
       0

Very basi c рекурсия в python

0 голосов
/ 24 января 2020

У меня есть проблема, которую я не могу решить, наверное, потому что я не совсем понимаю рекурсию ... но у меня есть эта функция, которую мне нужно реализовать.

def elements(num, multiplier, add, limiter) -> List[int]:

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]

Я не могу использовать какие-либо циклы, поэтому нет для цикла или во время цикла ... или все, что содержит цикл в нем (сумма, мин, макс .... и т. Д.)

Я написал это, и я знаю, это глупо, но я не совсем понимаю, как работает рекурсия, я думаю ... именно поэтому я пришел сюда, потому что лучше всего учусь из кода

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)

1 Ответ

5 голосов
/ 24 января 2020

Как то так?

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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...