Как исправить рекурсию?

Дана функция. Надо найти посл. чисел (без пробелов), что выведется при вызове F(4). Ответ: 4321021

  def F(n):
        print (n)
        if n > 2:
            F(n − 1)
            F(n − 2)
            F(n − 3)

Самый простой способ (как я и сделал), это заменить вывод: print(n, end=''). Ответ совпал. Но затем я модифицировал функцию, при вызове print(F(4, '')) выводит 4324314304241 .

def F(n, l):
    l+=str(n)
    if n > 2:
         return F(n - 1, l) + F(n - 2, l) + F(n - 3, l)
    else:
        return l

В чем ошибка?


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Ошибка в использовании параметра l. Лучше вообще без него:

def F(n):
    if n > 2:
        return str(n) + F(n - 1) + F(n - 2) + F(n - 3)
    else:
        return str(n)
→ Ссылка