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))
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 deif 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.