es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Recursión en PythonTutor, IDLE y Spyder.

Esta función recursiva funciona en Pythontutor.com, pero alcanza el límite de profundidad de recursión en IDLE y Spyder. No soy experto, así que estoy desconcertado. Sé que el caso base es incorrecto. Realmente lo sé.
Mi pregunta es por qué IDLE y Spyder crean un bucle recursivo que no devuelve nada, en lugar de generar la salida de que el segundo poder de 4 es 4, como lo hace PythonTutor. Es incorrecto, pero al menos el programa se completa con elegancia.

def recPow(base, exp): 
    ''' 
    base: int o float. 
    exp: int >= 0 
    returns: int o float, base^exp 
    '''
    if exp == 0:
        return 1
    else:
        return base * recPow(base, exp-1)

print(recPow(4, 2))
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en el caso base de la función recursiva. El caso base debería ser if exp == 0 en lugar de if exp == 1. Esto se debe a que el caso base debería ser el punto en el que el bucle recursivo se detiene, que en este caso es cuando el exponente es 0. Con el caso base actual, la función seguirá llamándose a sí misma hasta que alcance el límite de profundidad de recursión.

Comments are closed.