¿Qué significan la iteración y la recursividad en los algoritmos informáticos? ¿Cuál es la diferencia entre los dos?
Método iterativo: de 1 a 100, acumulando hacia abajo. 1 2=3, 3 3=6, 6 4=10, 10 5=15...
El programa dice,
int i=1, suma = 0;
while(ilt=100){
suma = suma I;
}
Ejercicio recursivo: necesito que el valor acumulado vaya del 1 al 100. Si tengo un valor acumulativo de 1 a 99, agregar ese valor a 100 me da un valor acumulativo de 1 a 100. Para obtener el valor acumulado de 1 a 99, si ya obtuvo el valor acumulado de 1 a 98, agregue 99 a este valor, que es el valor acumulado de 1 a 99... Finalmente, desea obtener el valor acumulado de 1 a 2. Si el valor acumulativo que obtengo es 1, puedo sumar 2 y 1 es suficiente. Entonces ahora obtenemos el valor acumulativo de 1 a 2, sumamos este valor a 3 para obtener el valor acumulativo de 1 a 3,... y finalmente obtenemos el valor acumulativo de 1 a 100.
Una característica típica de los métodos recursivos es la representación del programa, en la que la función se llama a sí misma.
int GetSum(int n)
{
Si (n lt=0) devuelve 0
de lo contrario, devuelve n GetSum( n-1);
}
En el ejemplo anterior, el resultado final de la recursión en realidad se completa utilizando el método iterativo, pero no es directamente visible en el procesamiento del programa. Ambos pueden completar bien las tareas informáticas. La diferencia radica en la forma de pensar, lo que lleva a diferentes métodos de cálculo: la iteración es pensamiento avanzado, pensar en el problema de principio a fin es pensamiento inverso. Supone que ya hemos obtenido algunos resultados (supongamos que ya conozco el valor acumulativo de 1 a 99, sumo este valor a 100 y obtenemos el valor acumulativo de 1 a 100), rastreando desde la cola hasta la cabeza, por lo tanto simplificar (Por supuesto, este ejemplo no es obvio. Es solo para facilitar la comprensión. Si está interesado, puede consultarlo).