im, пытающийся сделать мою программу запущенной, как я ее хочу, но у меня есть некоторые проблемы с этим, надеюсь, кто-то может помочь с этим.Можно ли это сделать с рекурсией?
Я написал программу, которая берет список символов и собирает их для создания слов. Слово заканчивается, когда в списке есть «». Так что, похоже, что:
inp = ['r','e', 'e', 'l', ' ', 'y', 'e', 'l', 'l', 'o', 'w', ' ', 'g', 'e', 'l',' ', 'p','e','e','k']
outp = ['reel', 'yellow', 'gel', 'peek']
код выглядит следующим образом:
def mer(inp, outp=[]):
tail = 0
for item in inp:
if item == (" "):
inp[:tail] = ["".join(inp[:tail])]
outp.append(inp.pop(0))
inp.remove(item)
if ((" ") in inp) == False:
inp[:] = ["".join(inp[:])]
outp.append(inp.pop(0))
tail +=1
И теперь, чтобы получить выход (в случае с входом, как сверху) мне нужно позвонить Мер два раза , Есть ли способ заставить его работать до тех пор, пока список ввода не будет пустым или, возможно, не будет использовать рекурсию?
Это просто упражнение по программированию, поэтому, возможно, все будет сделано лучше, но на данный момент это все, что мне нужно.
Да, это может быть сделано с помощью рекурсии. В общем, все, что вы можете писать с использованием циклов, может быть записано рекурсивно и наоборот, хотя вам, возможно, придется использовать дополнительные структуры данных, такие как стеки. Постскриптум Это домашнее задание? Если это так, он должен быть помечен как таковой. – skytreader
Хорошо, спасибо. Нет, это не домашнее задание, просто моя собственная идея что-то делать. – Iscario
Спасибо за все ответы, в то время как лучшая команда для выполнения этой работы - использовать join и split (спасибо kev, Alasdair), я хотел знать, как что-то вроде моего вопроса будет выглядеть с рекурсией. Cheers – Iscario