Как-то так. В return я добавил тенарный оператор. def mirror(string): if len(string) == 0: return "" elem = string[0] return elem + mirror(string[1:]) + ( ")" if elem == "("else elem ) text = input() print(mirror(text))
@webarchitect Жыл бұрын
Верно. Настоящее условие окончания это пустая строка, а не 1 символ, и становится 2 условных оператора вместо трёх.
@GinnSun2 жыл бұрын
а у меня другое решение, пришел к нему каким-то магическим образом(просто сидел и тестировал то что делал): def rev(n, b=[]): for i in n: if i == '(': b.append(')') else: b.append(i) c = b[::-1] return n + ''.join(c) print(rev(n= input()))
@ИгорьДорошенко-з6з2 жыл бұрын
Это не рекурсия, в рекурсивном решении функция должна обратиться сама к себе, заглянуть сама в себя.
@sype16802 жыл бұрын
Так суть решения задачи именно рекурсией) А так можно решить с помощью стека, будет более оптимально при больших объемах данных
@Sergey-cz7ym2 жыл бұрын
Тогда уж так: s, d, i = input(), '', 0 while i < len(s): d = (')' + d) if (s[i] == '(') else (s[i] + d) i += 1 print(s + d) или так s = input() print(s + s[::-1].replace('(', ')')) но надо через рекурсию