Mi objetivo es concatenar dos cadenas usando recursividad.
La entrada sería str1 = ("cadena larga") str2 = ("sí, tanto tiempo")
y la salida sería: 'lyoensg ssto rlionngg'
Se supone que ambas cadenas tienen la misma longitud.
Mi código a partir de ahora es:
def concat_order(str1, str2):
if len(str1) == 0:
return 'complete'
i = 0
new_str = str1[i] + str2[i]
i = i + 1
return concat_order(str1[1:], str2[1:])
return new_str
print(concat_order("long string"', "yes so long"))
Estoy seguro de que no estoy cerca, pero estoy luchando para que se repita.
No tengo permitido usar bucles, pero puedo usar sentencias if
Solución del problema
No necesita pasar 'i' de esta manera: new_str = str1[i] + str2[i]
ya que está devolviendo una cadena que excluye el carácter anterior: return concat_order(str1[1:], str2[1:])
.
Además, una función no puede tener dos declaraciones de retorno como esta:
return concat_order(str1[1:], str2[1:])
return new_str
cualquier declaración después de la declaración de devolución no se ejecutará. Es por eso que escribimos declaraciones de devolución múltiples en alguna declaración condicional comoif else
Modificó su programa para dar la respuesta correcta.
def concat_order(str1, str2, new_str):
if len(str1) == 0:
return new_str
new_str += str1[0] + str2[0]
return concat_order(str1[1:], str2[1:], new_str)
ans = ""
print(concat_order("long string", "yes so long", ans))
o puedes hacer esto:
def concat_order(str1, str2):
if len(str1) == 0:
return ''
return str1[0] + str2[0] + concat_order(str1[1:], str2[1:])
print(concat_order("long string", "yes so long"))
a medida que el flujo de control alcanza el caso base, ya tenemos lo que queríamos, así que no devuelva nada.
No hay comentarios.:
Publicar un comentario