GOOGLE ADS

sábado, 30 de abril de 2022

Usando la recursividad para concatenar dos cadenas

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

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...