Según explicó mi profesora de programación una función recursiva es aquella que se llama así misma tantas veces como sea necesario para lograr algo. Y una funcion iterativa es un bucle (for o while) que tambien se repite para lograr algo.
Según ella es mucho mas útil una función recursiva que hacerlo con un bucle, lo cual no estoy de acuerdo y hago este thread para que dejen sus opiniones y fundamentos aver si puedo aclarar un poco mi duda.
Voy a dar dos ejemplos simples hechos en python.
HTML Code:
def max_value_iterativa( nList ):
output = nList[ 0 ];
for i in nList:
if i > output:
output = i;
return output;
def max_value_recursiva( nList, CurrentValue = 0, output = 0 ):
if nList[ CurrentValue ] > output:
output = nList[ CurrentValue ];
if len( nList ) > CurrentValue + 1:
return max_value_recursiva( nList, CurrentValue + 1, output );
else:
return output;
Un ejemplo de como llamar a estas funciones es:
HTML Code:
lista = [ 0, 20, 15, 35, 2 ];
print max_value_iterativa( lista );
print max_value_recursiva( lista );
Para llegar a que es mas eficiente usar la iteración que la recursión lo que hize fue pensar como las 2 funciones se almacenan en memoria.
La función iterativa: Se carga el bloque en memoria de la funcion en memoria una sola vez y cuando termina se borra de la memoria.
La función recursiva: Por cada item de la lista se va a cargar el bloque de la función en memoria. O sea que si tengo 5 valores en la lista y el bloque (por dar un ejemplo) ocupa 100B en memoria, en el momento que estén los 5 bloques simultaneamente en memoria se van a ocupar 500B de memoria.
Y en la función iterativa solo se carga una vez en memoria.
Vuelvo a preguntar, ¿Tengo razón?
__________________