La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String

Presentaciones similares


Presentación del tema: "Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String"— Transcripción de la presentación:

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

7

8

9 Ejercicio 3 (optativo) Ingresar un número y calcular su sumatoria
Debe sumarse todos los número que le anteceden

10

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

12

13 Ejercicio 5 Hacer el programa Dec2Bin
Se ingresa un número decimal y se devuelve el binario correspondiente

14

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

18

19 Ejercicio 7 (optativo) Hacer un menú con todos los ejercicios de recursividad


Descargar ppt "Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String"

Presentaciones similares


Anuncios Google