Trabajo Práctico Nº 13 Tema: RECURSIVIDAD

Documentos relacionados
Estructura de datos y de la información Boletín de problemas - Tema 9

Ámbito y Funciones. Lenguaje de Programación Estructurado. Siempre imaginé el Paraíso como algún tipo de biblioteca.

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015

Recursividad. Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile

RECURSIVIDAD. Prof. Ing. M.Sc. Fulbia Torres

Recursividad... un análisis posterior. Aurelio Sanabria Introducción a la programación

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote RECURSIVIDAD Y SOBRECARGA DE METODOS

La recursividad forma parte del repertorio para resolver problemas en Computación y es de los métodos más poderosos y usados.

Recursividad Definición

ESTRUCTURA DE DATOS: Tema 3. Recursividad

dit UPM Tema 1: Introducción /recursión Análisis y diseño de software José A. Mañas

Tema: Funciones, Procedimientos y Recursividad en C#.

Aritmética en Haskell

Tema 5- Diseño Recursivo y. Objetivos Principales. Bibliografía Básica

Complejidad de algoritmos recursivos

Tema 7: Recursividad

Tema: Funciones, Procedimientos y Recursividad en C#.

Introducción a la programación en C eme - Escuela Universitaria de Música

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Análisis de algoritmos. Recursividad

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

#include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; }

Trabajo Práctico 5 Estructura Repetitiva

Multiplicación de matrices simétricas

UNIDAD 7 Recursividad Concepto. Algoritmos recursivos. Seguimiento de la recursión. Algunos métodos recursivos de búsqueda y ordenación: M-Sort y

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Programación II Recursividad Dr. Mario Rossainz López

Recursión Directa. Una función es de recursión directa si contiene una llamada explícita a si misma. return foo (y 1); Recursión Indirecta

Tema 3. Estructuras de control y programación estructurada

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani

Metodología y Tecnología de la Programación

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

Cadenas de caracteres

Problemas de Recursividad

Programación I Recursividad.

6. Sentencias repetitivas o bucles

Estructura de datos y de la información Boletín de problemas - Tema 10

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Modularización en lenguaje C. Funciones

Subrutinas. Subrutinas. Erwin Meza Vega

TI 89. Cómo sobrevivir en Precálculo

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO INGENIERÍA EN COMPUTACIÓN

Ejercicios Tema 6. Funciones

Diseño y Análisis de Algoritmos

Ejercicios sobre recursividad

Materia: Matemáticas de 4to año. Tema: Logaritmos naturales y base 10. Marco Teórico

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Funciones Tipos de funciones y Recursividad

Tema 4.- Recursión e iteración

PROBLEMAS DEL TEMA 7 SUBPROGRAMAS Y MODULARIDAD

Práctica : Creación y uso de métodos

UAA Sistemas Electrónicos Estructura de Datos Muñoz / Serna

Números primos y criterios de divisibilidad

Introducción a Haskell. Cecilia Manzino

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Si un número es múltiplo de otro, u dicho de forma, comprobar si un número es divisor de otro.

Funciones: Pasos por Referencia Recursividad

Capítulo 2: Inducción y recursión Clase 3: Definiciones recursivas e Inducción estructural

Lección 2 Introducción al lenguaje C

Programación Orientada a Objetos Métodos Guía de Ejercicios v9.7

Ejemplo: El problema de la mochila. Algoritmos golosos. Algoritmos y Estructuras de Datos III. Segundo cuatrimestre 2013

Álgebra y Álgebra II - Segundo Cuatrimestre 2017 Práctico 4 - Espacios Vectoriales

ALGORITMICA Y PROGRAMACION POR OBJETOS I

Programación Dinámica

Programación dinámica: un último ejemplo

Funciones recursivas

Recursión. Capítulo 4

La transformada rápida de Fourier (FFT) y otros algoritmos para la implementación de la DFT

Luis Rodríguez Baena Universidad Pontificia de Salamanca Escuela Superior de Ingeniería y Arquitectura

Trabajo Práctico 7 Recursividad Versión 4

(n, a)(m, b) = (nm, ma + nb) (a, b) + (c, d) = (a + c, b + d) y (a, b)(c, d) = (ac, bd)

Tipos de datos algebraicos

ÁREA: MATEMÁTICAS UNIDAD : 1 TEMPORALIZACIÓN: OCTUBRE 1ª QUINCENA OBJETIVOS CONTENIDOS CRITERIOS DE EVALUACIÓN

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

PROBLEMAS DEL TEMA 7: Subprogramas y Modularidad

COMPETENCIA S Y OBJETIVOS DE M A T E M ÁTICAS DE SEXTO

Números naturales y recursividad

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

Opuesto de un número +3 + (-3) = (+5) = 0. N = 0,1, 2,3,4, Conjunto de los números naturales

Trabajo Práctico Nro. 1

SGUICES023MT21-A16V1. SOLUCIONARIO Logaritmos

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA

Variables, expresiones y sentencias

Ejercicios de Álgebra Básica. Curso 2016/17

LÓGICA SECUENCIAL Y COMBINATORIA

5. ESTRUCTURAS DE REPETICIÓN

Métodos CON valor de retorno

1. Una pila funciona según el método LIFO (Last In First Out ). Se define la clase Pila de la siguiente forma:

Tipos de datos y Operadores Básicos

POTENCIACIÓN Y RADICACIÓN

2. Obtener, por ensayo y error, una aproximación del entero más grande. Sugerencia: leer n y escribir n y n+1. (Puede ser muy largo el ensayo).

Red de contenidos matemáticas 4 básico

VARIABLES Y TIPOS DE DATOS

Divisibilidad y congruencia

Carlos A. Rivera-Morales. Precálculo 2

D L M M J V S

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Manos a la obra: Recursión, división y listas

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Transcripción:

1 Dado el siguiente método recursivo: int puzzle(int base, int limite) if(base > limite) return -1; if(base == limite) return (base * puzzle(base + 1, limite)); a) Identificar: el o los casos bases del método puzzle el o los casos generales del método puzzle b) Mostrar cuál sería el resultado de las siguientes llamadas al método recursivo: Systemoutprintln(puzzle(14, 10)); Systemoutprintln(puzzle(4, 7)); Systemoutprintln(puzzle(0, 0)); 2 Dado el siguiente método recursivo: int concurso(int base, int limite) if(base == limite) if(base > limite) return 0; return (base + concurso(base + 1, limite)); Mostrar lo que retornan las siguientes llamadas: a) int x=concurso(0, 3); x es b) int y=concurso(10, 7); y es c) int z=concurso(5, 50); z es 3 En cada uno de los siguientes métodos identificar: el o los casos bases; una llamada recursiva a una versión más pequeña del método; y explicar que hace cada método a) int potencia(int m, int n) return (m * potencia(m, n - 1)); b) int factorial(int n) if(n > 0) return (n * factorial(n - 1)); - Página 1 de 5 -

return 1; c) void clasificar(int[] datos, int desdeind, int hastaind) int maximo; if(desdeind!= hastaind) maximo=posicionmaximoelemento(datos, desdeind, hastaind); intercambiar(datos, maximo, hastaind); clasificar(datos, desdeind, hastaind - 1); En el caso del inciso a), qué ocurre cuando n es un valor negativo? Modificarlo En el caso del inciso c), qué ocurre cuando desdeind es un valor negativo o hastaind es un valor mayor o igual al de la cantidad de elementos en el vector? Modificarlo 4 Dado el siguiente método recursivo: void desconocido(int n, int d) int k; if(n > 0) desconocido(n - 1, d + 1); for(k=1; k<=d; k++) Systemoutprintln( ); for(k=1; k<=d; k++) Systemoutprintln( ); Systemoutprintln( ); desconocido(n - 1, d + 1); Resolver los siguientes incisos: a) Qué hace el método? b) Hacer un seguimiento con la llamada desconocido(4, 1) c) Qué ocurre si n es negativo? Si el método contemplara valores negativos para n, sería posible esto? 5 Cuál es la secuencia numérica generada por los siguientes métodos recursivos? a) if(n == 0 n == 1) return (3 * f(n - 2) + 2 * f(n - 1)); - Página 2 de 5 -

b) c) if(n == 0 n == 1) return (3 * f(n - 2) + 2); if(n == 1) return 2; return (2 * f(n - 2) + f(n - 1)); 6 Escribir un método recursivo que calcule la siguiente suma: 1 + 2 + 3 + + (n - 1) + n 7 Escribir un método recursivo para encontrar la suma de los enteros pares hasta N 2 + 4 + 6 + + (n - 2) + n 8 Escribir un método recursivo para calcular la suma de la siguiente serie de enteros, de 1 hasta N 1 n + 2 n-1 + 3 n-2 + + n - 1 2 + n 1 9 Suponer que la función G está definida recursivamente de la siguiente forma: 1 sí x y G(x, y) = G(x, y+1) + 1 sí y < x Si x e y son enteros positivos a) Escribir el método recursivo b) Encontrar el valor de G(8, 6) c) Encontrar el valor de G(100, 10) 10 Sea H(x) un método definido recursivamente x > 0, donde x es un entero: 1 sí x = 1 H(x) = H(x/2)+1 sí x > 1 a) Escribir el método recursivo b) Encontrar el valor de H(80) c) Cómo podemos describir lo que hace este método? 11 Escribir un método recursivo int vocales(string cd) para calcular el número de vocales de una cadena - Página 3 de 5 -

12 A partir de un vector de caracteres, determinar si es un palíndromo Un palíndromo se cumple si al invertirlo se obtiene la misma secuencia de caracteres Escribir un método recursivo que retorne TRUE si el vector es un palíndromo y FALSE en caso contrario Escribir otro método recursivo, sobrecargado, que reciba un String, en vez de un vector de caracteres 13 Un ejemplo sobre definición recursiva es la definición de multiplicación de números naturales El producto de a * b donde a y b son enteros positivos, se puede definir como a sumado así mismo un número de veces igual a b Esta definición es iterativa Una definición iterativa equivalente sería: a * b = a sí b = 1 a * b = a * (b-1) + a sí b > 1 Con el fin de evaluar 6 * 3 utilizando esta definición, debemos primero evaluar 6 * 2 y entonces al resultado agregarle 6 Para evaluar 6 * 2, debemos primero evaluar 6 * 1 y agregarle 6 Pero 6 * 1 es igual a 6 según la primera parte de la definición Entonces: 6 * 3 = 6 * 2 + 6 = 6 * 1 + 6 + 6 = 6 + 6 + 6 = 18 Convertir la definición anterior en un algoritmo recursivo 14 Convierta el siguiente método iterativo en uno recursivo El método calcula un valor aproximado de e; la base de los logaritmos naturales, sumando las series: 1 + 1/1! + 1/2! + +1/n! Hasta que los términos adicionales no afecten a la aproximación: double loge() double en1, delta, fact; int n; en1=fact=delta=10; n=1; do en1=delta; n++; fact *= n; delta=10 / fact; while(en1!= en1 + delta); return en1; 15 El Máximo Común Divisor de dos enteros x e y, se define de la siguiente manera: maximocomundivisor(x, y) = y sí y <= x y x % y = 0 maximocomundivisor(x, y) = maximocomundivisor(y, x) sí x < y maximocomundivisor(x, y) = maximocomundivisor(y, x % y) para cualquier otro caso Escribir el método recursivo maximocomundivisor(x, y) 16 Escribir un método recursivo que liste todos los subconjuntos de dos letras para un conjunto dado de letras Ejemplo: [A, C, E, K] [A, C], [A, E], [A, K], [C, E], [C, K], [E, K] - Página 4 de 5 -

17 Definimos combinaciones(n, k) como el número de combinaciones de n elementos agrupados de k en k, es decir, el número de los diferentes grupos que se pueden formar con miembros, dado un conjunto de n miembros para elegir Así, por ejemplo: sí n = 4, es decir los elementos A, B, C, D entonces combinaciones(4, 2) = 6 el resultado es: (A, B), (A, D), (A, C), (B, C), (B, D), (C, D) Matemáticamente combinaciones(n, k) se define: combinaciones(n, 1) = n combinaciones(n, n) = 1 combinaciones(n, k) = combinaciones(n-1, k-1) + combinaciones(n-1, k) n > k y k > 1 a) Encontrar el valor de combinaciones(8, 5) b) Escribir un método recursivo para calcular combinaciones(n, k) 18 Realizar un método recursivo que calcule la función de Ackermann definida de la siguiente forma: A(m, n) = n+1 sí m = 0 A(m, n) = A(m-1, 1) sí n = 0 A(m, n) = A(m-1, A(m, n-1)) sí m > 0 y n > 0 Escribir el método Ackermann de manera iterativa 19 Probar el método recursivo del ejercicio 3c 20 Sea sec1 y sec2 secuencias de caracteres representadas con arreglos Escribir un método recursivo que determine si sec2 se encuentra contenido en sec1 21 Dado un vector de enteros, escribir algoritmos recursivos para: a) Mostrar el vector de forma inversa b) Buscar en el vector un determinado valor c) Sumar los elementos del vector d) Buscar el valor máximo de los elementos del vector 22 Escribir un método recursivo que calcule los números de Fibonacci La serie se representa de la siguiente manera: Fibonacci(n) = 1 sí n = 1, n = 2 Fibonacci(n-1)+ Fibonacci (n-2) sí n > 2 Fib(1) = 1 Fib(2) = 1 Fib(3) = Fib(1) + Fib(2) Fib(4) = Fib(2) + Fib(3) - Página 5 de 5 -