Это домашняя работа, которая разбила мне голову, и мне было интересно, если кто-нибудь может помочь мне понять, где я иду не так. По сути, у меня есть две строки, «а» и «б». Если «a» или «b» пусто, я возвращаю другую строку, в противном случае я возвращаю объединение, первый символ в каждой строке плюс рекурсивный вызов для остальной части каждой строки. Поэтому это вызывает у меня рекурсию, поэтому я создаю следующую функцию:
def myFunction(s, t):
if len(s) == 0:
return([t])
if len(t) == 0:
return([s])
else:
to_add = [[s[0]] + (myFunction(s[1:], t)), ([t[0]] + myFunction(s, t[1:]))]
return(to_add)
, которая печатает при вызове функции с входами s = "ab" и t = "cd":
[['a', ['b', 'cd'], ['c', ['b', 'd'], ['d', 'b']]], ['c', ['a', ['b', 'd'], ['d', 'b']], ['d', 'ab']]]
Итак, насколько я вижу, это не проблема логики c, более того, я немного глуп, когда возвращаю свой код, потому что ожидаемый ответ - там, просто в кучу списков в списках. Я ожидаю ответа:
['abcd', 'acbd', 'acdb', 'cabd', 'cadb', 'cdab']
Если кто-то может указать где я действительно глупый / предлагаю лучший способ сделать это, я буду очень благодарен, потому что я начинаю чувствовать себя очень плохо из-за этого ха-ха.