por qué la función recursiva de Python a veces no devuelve ninguna
a diferencia de las funciones iterativas, las funciones recursivas dependen de sus llamadas recursivas para devolver valores. Cuando la función se llama varias veces, los valores de retorno deben manejarse adecuadamente para obtener la salida deseada.
Considere el siguiente código Python:
def gcdIter(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
print(a)
return a
gcdIter(a, b % a)
Esta función tiene como objetivo encontrar el mayor divisor común de dos números usando recursión. Sin embargo, no puede devolver ninguno para ciertas entradas porque el valor de retorno de la llamada recursiva no se maneja correctamente.
print(gcdIter(306, 136)) # Returns None
print(gcdIter(42, 84)) # Returns 42
Para resolver esto, el código debe pasar el valor de retorno de la llamada recursiva a la función principal. Al modificar la línea GCDiter (a, b % a) para devolver gcditer (a, b % a), la función devolverá correctamente el mayor divisor común.
def gcdIter(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
print(a)
return a
return gcdIter(a, b % a)
Alternativamente, la función se puede reescribir más compactamente como:
def gcd_iter(a, b):
return gcd_iter(b, a % b) if b else abs(a)
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3