¿Cómo entender la recursividad?

La recursividad y la iteración son ambos tipos de bucles.

En pocas palabras, la recursividad consiste en llamar repetidamente a una función para implementar un bucle. La iteración es un bucle implementado por una determinada sección de código dentro de una función, y la diferencia entre iteración y bucles ordinarios es que las variables involucradas en la operación en el código del bucle también son variables que almacenan los resultados, y se utilizan los resultados guardados actualmente. como valores iniciales para el siguiente cálculo del ciclo.

En el bucle recursivo, cuando se cumple la condición de terminación, regresa capa por capa hasta el final. La iteración utiliza el contador para finalizar el ciclo. Por supuesto, en muchos casos se mezclan y utilizan varios ciclos, lo que depende de las necesidades específicas.

Un ejemplo de recursividad, por ejemplo, dada una matriz de números enteros, utiliza una media consulta para devolver el índice del valor especificado en la matriz. Supongamos que la matriz ha sido ordenada. Para facilitar la descripción, supongamos. que los elementos son todos números positivos y que la longitud de la matriz es 2, un múltiplo entero de.

La media consulta es un tipo de consulta que es mucho más rápida que atravesar todos los elementos. int?Find(int?*ary,int?index,int?len,int?value)

{

if(len==1)//último elemento

{

if?(ary[index]==value)return?index;//La consulta exitosa devuelve el índice

return?-1;//Falló, devolvió -1

}

//Si la longitud es mayor que 1, realiza una consulta medio recursiva

int?half=len/2;

//Comprueba si el valor marcado es mayor que el último valor en la primera mitad; si es así, consulta recursivamente la segunda mitad

if(value>ary[index+half-1] )

return?Find(ary,index+half,half,value);

//De lo contrario, consulta recursivamente la primera mitad

return?Find(ary ,index,half,value) ;

}

El ejemplo clásico de iteración es la acumulación de números reales, como calcular la suma de todos los números reales del 1 al 100. int?v=1;

for(i=2;i<=100;i++)

{

v=v+i;

}