Recursividad

download Recursividad

of 2

description

Estructura de Datos

Transcript of Recursividad

  • MC Alejandro Aguilar Cornejo

    1

    Estructuras de datos Recursividad: multiplicacin por duplicacin

    Fecha lmite de entrega: Viernes 26 de septiembre de 2014.

    Objetivo de la prctica Analizar, disear e implementar funciones de clculo recursivo. Introduccin En la programacin, la recursividad es la caracterstica que tiene un sistema de estar estructuralmente sujeto a reglas o pautas recurrentes, es decir que sus trminos pueden conocerse a partir de los precedentes, en donde se encuentra implcita la idea del orden en sus elementos. En esta prctica se plantea el diseo y escritura de funciones recursivas para el clculo matemtico. El problema de la multiplicacin de enteros positivos Sea { } el conjunto de los nmeros enteros positivos (o simplemente enteros). El Problema de la Multipli-cacin de Enteros Positivos (PMEP) es una operacin que se denota (o simplemente ) y consiste en transfor-mar a los enteros y en otro entero de tal manera que . Esta operacin se define de la siguiente manera:

    As, por ejemplo: . El dominio de este problema es el conjunto de todos los pares de enteros y .

    El algoritmo de multiplicacin por duplicacin Sean y dos enteros. Conocido tambin como algoritmo de multiplicacin ruso, consiste en lo siguiente. Cada par de enteros se asociar con un valor entero llamado la reserva de y :

    1. Si es impar entonces reserve , de lo contrario reserve 0. 2. Divida a entre (divisin entera). 3. Duplique el valor de . 4. Si entonces vuelva al paso 1. De lo contrario, contine. 5. Sume todos los valores que fueron reservados y proporcione este valor como el resultado de la operacin.

    Por ejemplo sean y . Entonces:

    reserva Paso 1: Inicio del procesamiento Paso 2: Paso 3: Paso 4: Paso 5: Paso 6: Paso 7: Fin del procesamiento

    Suma de las reservas

    As, .

  • MC Alejandro Aguilar Cornejo

    2

    Apreciacin recursiva del algoritmo de multiplicacin por duplicacin Observe que cada paso del clculo de la solucin de consiste en un ejemplar nuevo del PMEP. Por ejemplo, en el paso 3 se plantea el clculo de y en el paso 5 el de . Particularmente en el paso 1 se plantea el clculo de , cuya solucin se da en funcin de la solucin de todos los planteamientos posteriores de la si-guiente manera: se plantea como la suma de su reserva ( ) ms la solucin de (planteamiento del siguiente paso). A su vez, la solucin de se plantea como la suma de su reserva ( ) ms la solucin de , etc. Generalizando, la solucin del paso se define como la suma de su reserva ms la solucin del paso .

    Observe que si entonces la reserva ser igual a (lo cual es la solucin de ) y en lo sucesivo valdr siempre , haciendo que la reserva sea tambin, infinitamente y por definicin, igual a . Por ello, la solucin del planteamiento del algoritmo cuando puede definirse como y poner fin al clculo, ya que . As, si se asume el final del procedimiento antes de calcular la suma de reservas.

    Requerimiento Deber disear e implementar una funcin recursiva para calcular la multiplicacin de dos enteros positivos, siguiendo la estrategia del algoritmo de duplicacin.

    Deber elaborar un reporte de prctica en donde:

    1. Especifique la definicin formal de la funcin recursiva que dise. 2. Indique claramente cul es la base de la recursin y cul es el paso inductivo. 3. Incluya la implementacin (el cdigo) de su funcin recursiva.

    No elabore una pgina de presentacin para su reporte. En lugar de ello, elabore un membrete en el cual identifique su trabajo. El reporte de prctica deber entregarse impreso a ms tardar en la fecha lmite que se seala al inicio del documento. Para la entrega de sus programas:

    1. Deber comprimir sus archivos de cdigo en un archivo .ZIP, .RAR o .7z, el cual deber llevar su nombre con el

    formato nombre.apellido.extensin. Por ejemplo abelardo.gomez.zip.

    2. Para construir su archivo comprimido, agregue nicamente su cdigo fuente (archivos con extensin .cpp o

    .h) y en su caso el archivo de proyecto (archivos con extensin .cbp, en el caso de codeBlocks). No agregue

    cdigo objeto (.o, .obj) ni archivos ejecutables (.exe). 3. Enve su archivo comprimido a la direccin [email protected] a ms tardar en la fecha lmite de

    entrega con el asunto (subject) Recursividad 14 II.