RECURSIVIDAD
1. NivelaciónFunciones
MenúVectores
String2. Memoria Dinámica
RecursividadPunterosPilasColasListas
3. ArchivosArchivos de textoArchivos Binarios
(2 clases)(2 clases)
Recursividad Se dice que una función es recursiva cuando se
define en función de si misma. No todas la funciones pueden llamarse a si
mismas, deben estar diseñadas especialmente para que sean recursivas, de otro modo podrían conducir a bucles infinitos, o a que el programa termine inadecuadamente.
Cuando se llama a una función, se crea un nuevo juego de variables locales, de este modo, si la función hace una llamada a si misma, se guardan sus variables y parámetros.
La nueva instancia de la función trabajará con su propia copia de las variables locales, cuando esta segunda instancia de la función retorna, recupera las variables y los parámetros anteriores y continúa la ejecución en el punto en que había sido llamada.
Por ejemplo:
Función recursiva para calcular el factorial de un número entero.
El factorial se simboliza como n!, se lee como "n factorial", y la definición es:
n! = n * (n-1) * (n-2) * ... * 1 No se puede calcular el factorial de
números negativos, y el factorial de cero es 1, de modo que una función bien hecha para cálculo de factoriales debería incluir un control para esos casos:
int factorial (int n) { if (n < 0) return 0; else if (n > 1) return n*factorial(n-1); else return 1;}
Paso a paso: factorial(4)
1a Instancia n=4 Si n > 1 salida ← 4 * factorial(3) (Guarda el valor de n = 4)
2a Instancia Si n > 1 salida ← 3*factorial(2) (Guarda el valor de n = 3)
3a InstanciaSi n > 1 salida ← 2*factorial(1) (Guarda el valor de n
= 2) 4a InstanciaSI Entraen Else por n=1 → retorna 1
3a Instancia (recupera n=2 ) retorna 2*1=2
2a instancia (recupera n=3 ) retorna 3*2=6
1a instancia(recupera n=4 de la pila) retorna 4*6=24Valor de retorno → 24
Nota
Toda función recursiva se puede resolver de forma Iterativa y viceversa
Resolver factorial por Recursividad
Resolver la serie de Fibonacci:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55…
Ejercicio 1Ejercicio 1
Ejercicio 2Ejercicio 2
Ejercicio 3 (optativo)
Ingresar un número y calcular su sumatoria
Debe sumarse todos los número que le anteceden
Ejercicio 4
Hacer una función recursiva llamada potencia
Debe tener 2 parámetros: Base y Exponente
El resultado de la potencia es float
Ejercicio 5
Hacer el programa Dec2Bin Se ingresa un número decimal y se
devuelve el binario correspondiente
String
char *b; b es un string que no se le ha asignado
tamaño scanf y setpass al cargarlo le asigna tamaño
b b contiene la dirección de memoria del primer
elemento del stringSe dice que b es un puntero al stringb le informa donde comienza el string, pero
¿cómo sabe el lenguaje C donde termina el string b?
ee ss tt uu dd ii aa rr \0\0
String/Punteros
printf(“%s”,b) muestra estudiar
printf(“%i”,b) muestra la dirección de memoria del primer lugar del string
printf(“%i”,*b) muestra el código ASCII de e
printf(“%c”,*b) muestra e
Ejercicio 6
Hacer el programa Bin2Dec Se ingresa un número binario y se
calcula el valor decimal correspondiente El número binario debe ingresarse como
string
Ejercicio 7 (optativo)
Hacer un menúcon todos los ejercicios de recursividad
Top Related