Estructuras de Datos Ejemplos Recursión.

Slides:



Advertisements
Presentaciones similares
Ejemplo de Programa C++
Advertisements

MANUAL EXPRESS DE C J.M.sevilla.
Operaciones sobre un árbol
FUNCIONES EN C.
INFORMATICA I Funciones CLASE 13.
SOBRECARGA DE FUNCIONES
Cont. Arbol Binario de Búsqueda
Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;
Estructuras de Datos Punteros y algo más.
Unidad 3 Punteros.
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso.
Ejercicios de Arreglos y Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
LIA. SUEI CHONG SOL, MCE.. #include void main() { float N1,N2,N3,SUMA; cout>N2;
Programa “Coordenadas” Ing. Arturo Díaz Vargas Departamento de Sistemas División de Ciencias Básicas e Ingeniería UNIVERSIDAD AUTONOMA METROPOLITANA.
ÁRBOLES BINARIOS DE BÚSQUEDA
FUNCIONES EN C. SOBRE FUNCIONES... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Concepto de tupla Las tuplas son estructuras de datos que constan de varios campos que pueden contener datos de tipos distintos. El acceso al contenido.
3.  Recursividad.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Introducción al análisis de algoritmos
FUNCIONES O PROCEDIMIENTOS
Búsqueda. Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y.
Árboles binarios de búsqueda
Análisis de algoritmos
1 6. PARAMETRIZACIÓN. 2 Parametrización La parametrización permite realizar una abstracción de la identidad de varios ejemplos de los datos Los valores.
Estructuras de Datos Introducción. Proceso (Programa ) Datos de Entrada Datos de salida El proceso computacional.
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Análisis de Algoritmos 2
Sección 2-4 Estructuras de Control de Decisión Expresiones Lógicas.
Punteros.
Arboles binarios de búsqueda. Elemento estándar: Cuenta class Cuenta { public: int codigo; char nombreCliente[50]; float saldo; public: Cuenta(); Cuenta(int.
Estructuras de repetición
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
Introducción a la Programación
Funciones Curso Propedéutico Maestría en Ingeniería Electrónica.
Estructuras de Repetición (Hacer-Mientras)
Arreglos Computción.
1 Algunas ideas básicas en C++ Agustín J. González ELO-329.
Entrada / Salida Streams Archivos Algoritmos y Estructuras de Datos I Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Conceptos Avanzados de Programación
Eficiencia en uso de recursos y memoria
Estructuras de Repetición (Hacer-Mientras)
Sesión 2. Este algoritmo ordena un arreglo de forma ascendente o descendente comparando la casilla de arriba con la casilla consecutiva de abajo, utiliza.
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Fundamentos de Programación
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
INTRODUCCION A LA PROGRAMACION
ALGORITMOS Y ESTRUCTURAS DE DATOS Operaciones sobre cadenas de caracteres y Funciones LIA. Suei Chong Sol.
LENGUAJE “C” Programación.
Ingeniería en Software Facultad de Ingeniería 2014
Algoritmo.
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Corporación Universitaria del Caribe CECAR Fundamentos de programación II.
Arreglos Ejemplo paso a paso. Planteamiento Como estudiante de ingeniería, quieres usar tus habilidades de programador para llevar un registro de tus.
Desarrollador Profesional de Juegos Programación III Unidad II Trabajando con bloqueo de datos.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
Gabriela Araya Baez Estudiante Ingenieria Civil Industrial.
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Funciones y paso de parámetros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Unidad Didáctica 24.
LISTAS..
Transcripción de la presentación:

Estructuras de Datos Ejemplos Recursión

// Suma recursiva de elementos en un vector #include <iostream.h> int suma(int v[],int i, int n) { if (i==n) return v[i]; else return v[i] + suma(v,i+1, n); } void main(void) int vec[]= { 12, 4, 5, 6, 7}; cout << suma(vec,0, 4);

// Suma recursiva de elementos en un vector // Versión usando notación de punteros #include <iostream.h> int suma(int *v,int *n) { if (v==n) // Pregunta si está en la dirección del último... return *v; else return *v + suma(v+1, n); } void main(void) int vec[]= { 12, 4, 5, 6, 7}; cout << suma(vec,vec+4);

// Búsqueda de un elemento en un vector #include <iostream.h> int busca(int v[],int clave,int i, int n) { if (v[i] == clave) return 1; if (i == n) return 0; return busca(v, clave, i+1, n); } void main(void) int clave; int vec[]= { 12, 4, 5, 6, 7}; cout<< "Entre el dato a buscar:"; cin>> clave; cout<< busca(vec,clave, 0, 4);

// Invierte los elementos de un vector: #include <iostream.h> void invierte(int izq, int v[], int der) { if (der > izq) { int aux = v[izq]; v[izq] = v[der]; v[der] = aux; invierte(izq+1, v, der-1); } void main(void) int vec[]= {1,3,5,8,20}; invierte(0, vec, 4); for(int k=0; k<5; k++) cout << vec[k];

// ¿Qué hace este programa? #include <iostream.h> void mistery1(int v[],int i, int n) { if (i <= n) { cout<< v[i] << endl; mistery1 (v, i+1, n); } void main(void) int vec[]= {1,9,5,8,20}; mistery1(vec,0, 4);

// ¿Cuál es la diferencia de este con respecto al anterior? #include <iostream.h> void mistery2(int v[],int i, int n) { if (i <= n) { mistery2(v, i+1, n); cout<< v[i] << endl; } void main(void) int vec[]= {1,9,5,8,20}; mistery2(vec,0, 4);

// ¿Y este? #include <iostream.h> void mistery3(int v[],int i, int n) { if (i < n) { cout<< v[i] << endl; mistery3(v, i+1, n); cout<< v[i] << endl; } void main(void) int vec[]= {1,9,5,8,20}; mistery3(vec,0,5);

// Comparando 2 vectores de caracteres recursivamente // (se podría usar por supuesto strcmp()... ) #include <iostream.h> int iguales(char a[],char b[],int i,int tam) { if (a[i]== b[i]) if ( i==tam ) return 1; else return iguales(a,b, i+1, tam); } else return 0;

void main(void) { char vec1[]= "catalejo"; char password[9]; cout<<"Entre su password"; cin >> password; if(iguales(vec1,password,0,7)) cout<<"Acceso autorizado"; else cout<<"Clave errada"; }

Sumatoria de los n términos de la serie: 1 + 1/2 + 1/4 + 1/8 + 1/16 + … Solución recursiva: 1 + suma(1/2 + 1/4 + 1/8 + 1/16 + …) 1+ 1/2 + suma(1/4 + 1/8 + 1/16 + …) etc. Hasta que se sumen n términos Veamos el código:

#include <iostream.h> #include <math.h> float termino(int i) { return 1/(float)pow(2,i);} float suma(int i, int cuantos) { if(i==cuantos) return termino(i-1); else return termino(i-1) + suma(i+1, cuantos); } void main(void) { int n; cout<< "Entre el número de términos a sumar:"; cin>> n; cout<<suma(1,n);

Ejercicios Suponga que no dispone de la función pow, construya un programa recursivo que calcule XY , donde X e Y son números enteros >= 0. Diga que hace la siguiente función: int mistery(int a, int b) { if (b==1) return a; else return a + mistery(a, b-1); } ¿Qué pasa si b es negativo?