Recursividad

Páginas: 5 (1113 palabras) Publicado: 16 de octubre de 2011
Recursividad:

Las funciones en C pueden ser recursivas, es decir una función que se llama a sí misma se denomina recursiva, pueden llamarse a sí mismas directa o indirectamente.
Entonces un algoritmo recursivo es aquel que se llama así mismo con el fin de resolver determinados problemas. 
Un proceso recursivo tiene que tener una condición de finalización, ya que de lo contrario podríacontinuar infinitamente, es decir para que sea correcto un algoritmo recursivo es que no genere una secuencia infinita de llamadas así mismo. Ya que cualquier algoritmo que genere tal secuencia no termina nunca.
La recursividad es una herramienta muy importante en la programación que en muchos casos permite expresar algoritmos de forma simple y legible.

.
Sintaxis:<tipo_de_regreso><nom_fnc> (<param>)
{
[Declaración de variables]
[Condición de salida]
[Instrucciones]
[Llamada a <nom_fnc> (<param>)]
return <resultado>
}
.
El ejemplo más común, que se utiliza para explicar la recursividad, es el caso del cálculo de factorial

Ejemplos:
El cálculo de la factorial utilizando pseudocódigo, y codificación Basic y C 

Pseudocódigo: Función Factorial 
Si n = 0 
Entonces n!=1 
Si n > 0  
Entonces n! = n*(n-1)! 
 
Codificacion Basic: 

Public Function Factorial (Byval n As Integer) As Long 
If n = 0 Then  
Return 1 
Else 
Return (n*Factorial (n - 1)) 
End If 
End Function 
 
Codificacion C: 

Long Factorial (int n) 

if (n == 0) 
return  1; 
else 
return  n*(factorial(n – 1)); 
} En java:
Programar un algoritmo recursivo que permita sumar los elementos de un vector.

intsuma_vec(intv[],intn)
   {
if(n==0)
   returnv[n];
else
   returnsuma_vec(v, n-1) + v[n];
   }
Eficacia de la recursividad:
Se dice que es menos eficaz que la iterativa porque ocupa más memoria y mayor tiempo de ejecución pero hace el programa más sencillo y comprensible. Un programarecursivo se puede transformar en una solución iterativa mediante el uso de pilas.

TIPOS DE RECURSIVIDAD
1. Recursividad Simple:
en cuya definición sólo aparece una llamada recursiva. Se puede transformar con facilidad en algoritmos iterativos.
2. Recursividad Múltiple:
Se da cuando hay más de una llamada a sí misma dentro del cuerpo de la función, resultando más difícil de hacer de formaiterativa.
int Fib( int n ) /* ej: Fibonacci */
{ if(n<=1) return(1);
return(Fib(n-1) + Fib(n-2)); }
3. Recursividad Anidada:
Algunos de los argumentos de la llamada recursiva hay una nueva llamada a sí misma.

int Ack( int n, int m ) /* ej: Ackerman */
{ if(n==0 ) return(m+1);
else if(m==0) return(Ack(n-1,1));
return(Ack(n-1, Ack(n,m-1)));
}

4. La recursividaddirecta
Este tipo de recursividad se muestra en aquellas funciones que se invocan asi mismas. 
 
Ejemplo: 

FUNCIÓN Factorial(n) 
VAR resultado: Entero 
  SI (n<2) ENTONCES 
resultado = 1; 
SINO 
 resultado = n * Factorial(n-1); 
FSI 
RETORNA resultado; 
FFUNCIÓN 

5. Recursividad indirecta:

En este otro caso la función se invoca así misma haciéndoloindirectamente desde otra. 
Ejemplo: 

Subrutina_A → Subrutina_B → Subrutina_A 
Subrutina_A → Subrutina_B → Subrutina_C → Subrutina_D → Subrutina_A 

Ejemplo:
Int par(int n);
int impar(int n);

intpar(int n)
{
if(n == 0) return 1;
return impar(n-1);
}
Int impar(int n)
{
if(n == 0) return 0;
returnpar(n-1);
}

Recursividad Vs Iteración:
En las secciones anteriores se hanestudiado varias funciones que se pueden implementar fácilmente o de modo recursivo o bien de modo iterativo. En esta parte compararemos los dos enfoques y examinaremos las razones por las que el programador puede elegir u enfoque u otro según la situación específica.

Tanto la iteración como la recursión se basan en una estructura de control:
* La iteración utiliza una estructura repetitiva....
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Recurso
  • recursos
  • recursividad
  • Recursos
  • Recursos
  • Recurso
  • Recursos
  • recursos

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS