Как можно оптимизировать этот код на рекурсию?
Я написал функцию, которая выводит все числа от n до x за счёт рекурсии, но чую, что-то я сделала не так. Помогите мне пожалуйста, дайте парочку советов по оптимизации кода!
# вывод: 1 2 3 4 5
def rec(x, n=0, string=""):
if n == x:
print(string)
return None
n += 1
string += str(n) + " "
rec(x, n, string)
rec(5)
Ответы (3 шт):
Автор решения: Victor VosMottor thanks Monica
→ Ссылка
Питон под час лучше знания алгоритмов:
print(*range(int(input())+1))
Автор решения: n1tr0xs
→ Ссылка
Если вам нужно оставить рекурсию, то так можно
def rec(x, n=0, string=""):
if x == n:
print(string)
return
n += 1
string = ''.join([string, str(n), ' '])
rec(x, n, string)
Автор решения: CrazyElf
→ Ссылка
У вас практически всё правильно было, только строка не в том месте дополнялась (плюс сделал небольшие изменения, чтобы код чуть короче был):
# вывод: 1 2 3 4 5
def rec(x, n=0, string=""):
string += str(n) + " " # <- переставил сюда
if n == x:
print(string)
return # None не нужен, его всё-равно никто потом не смотрит
rec(x, n + 1, string) # n можно при вызове функции увеличивать
rec(5)
Результат:
0 1 2 3 4 5