RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad...
-
Upload
francisca-chavez-salinas -
Category
Documents
-
view
241 -
download
0
Transcript of RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad...
![Page 1: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/1.jpg)
RECURSIVIDAD
1. NivelaciónFunciones
MenúVectores
String2. Memoria Dinámica
RecursividadPunterosPilasColasListas
3. ArchivosArchivos de textoArchivos Binarios
(2 clases)(2 clases)
![Page 2: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/2.jpg)
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.
![Page 3: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/3.jpg)
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:
![Page 4: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/4.jpg)
int factorial (int n) { if (n < 0) return 0; else if (n > 1) return n*factorial(n-1); else return 1;}
![Page 5: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/5.jpg)
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
![Page 6: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/6.jpg)
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
![Page 7: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/7.jpg)
![Page 8: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/8.jpg)
![Page 9: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/9.jpg)
Ejercicio 3 (optativo)
Ingresar un número y calcular su sumatoria
Debe sumarse todos los número que le anteceden
![Page 10: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/10.jpg)
![Page 11: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/11.jpg)
Ejercicio 4
Hacer una función recursiva llamada potencia
Debe tener 2 parámetros: Base y Exponente
El resultado de la potencia es float
![Page 12: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/12.jpg)
![Page 13: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/13.jpg)
Ejercicio 5
Hacer el programa Dec2Bin Se ingresa un número decimal y se
devuelve el binario correspondiente
![Page 14: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/14.jpg)
![Page 15: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/15.jpg)
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
![Page 16: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/16.jpg)
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
![Page 17: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/17.jpg)
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
![Page 18: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/18.jpg)
![Page 19: RECURSIVIDAD 1. Nivelación Funciones Menú Vectores String 2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos.](https://reader036.fdocument.pub/reader036/viewer/2022081502/5665b4811a28abb57c921174/html5/thumbnails/19.jpg)
Ejercicio 7 (optativo)
Hacer un menúcon todos los ejercicios de recursividad