Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porFrancisca Chávez Salinas Modificado hace 9 años
1
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
2. Memoria Dinámica Recursividad Punteros Pilas Colas Listas 3. Archivos Archivos de texto Archivos Binarios Recursividad (2 clases)
2
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.
3
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:
4
int factorial (int n) { if (n < 0) return 0; else if (n > 1) return n*factorial(n-1); return 1; }
5
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 Instancia Si n > salida ← 2*factorial(1) (Guarda el valor de n = 2) 4a Instancia SI 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=24 Valor de retorno → 24
6
Nota Ejercicio 1 Ejercicio 2
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 1 Ejercicio 2
9
Ejercicio 3 (optativo) Ingresar un número y calcular su sumatoria
Debe sumarse todos los número que le anteceden
11
Ejercicio 4 Hacer una función recursiva llamada potencia
Debe tener 2 parámetros: Base y Exponente El resultado de la potencia es float
13
Ejercicio 5 Hacer el programa Dec2Bin
Se ingresa un número decimal y se devuelve el binario correspondiente
15
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 string Se dice que b es un puntero al string b le informa donde comienza el string, pero ¿cómo sabe el lenguaje C donde termina el string b? e s t u d i a r \0
16
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
17
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
19
Ejercicio 7 (optativo) Hacer un menú con todos los ejercicios de recursividad
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.