Как исправить рекурсию?
Дана функция. Надо найти посл. чисел (без пробелов), что выведется при вызове 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)