Documente Academic
Documente Profesional
Documente Cultură
EJERCICIO 2. Definiremos como nmero de dgitos incrementales a todo nmero natural N tal que
N=dmdm-1...d1d0 tal que di+1 di para 0 i < m. Por ejemplo: 1227, 359, 88, 139 son nmeros de dgitos incrementales. Escriba un planteo recursivo para determinar si un nmero natural N es de dgitos incrementales
EJERCICIO 3. Escriba un planteo recursivo para el algoritmo de Euclides, esto es, un planteo para
determinar cul es el mximo comn divisor entre dos enteros positivos X e Y.
EJERCICIO 4. El cuadrado de un nmero N puede calcularse con la suma de los N primeros nmeros
impares. Escriba un planteo recursivo para obtener el cuadrado de un entero positivo N basndose en esta propiedad. n n-simo impar n2 3 2 * 3 1= 5 1+3+5=9 4 2 * 4 1= 7 1+3+5+7=16 Nota: Tenga en cuenta que el n-simo nmero impar se puede obtener como 2 * n - 1.
EJERCICIO 5. Definimos nmero promedio de un nmero entero positivo, al nmero que se obtiene de
sumar sus dgitos impares y restar sus dgitos pares. Escriba un planteo recursivo para obtener el nmero promedio de un entero positivo dado. Ej.: el nmero promedio de 318547 es 4 pues 7-4+5-8+1+3= 4. Qu modificaciones debera hacer a su planteo si no hubiera restriccin sobre el signo del nmero entero.
EJERCICIO 6. La representacin binaria de un nmero natural N, se obtiene con los restos que resultan de
dividir sucesivamente N por 2, hasta que el dividendo se hace 0. Dichos restos se utilizan en el orden inverso al que fueron calculados para armar el correspondiente nmero binario.
28 dividido 2 da 14, resto 0 14 dividido 2 da 7, resto 0 7 dividido 2 da 3, resto 1 ==> 28 en binario es 11100 3 dividido 2 da 1, resto 1 1 dividido 2 da 0, resto 1
Dado un nmero natural N, escriba un planteo recursivo para expresarlo en sistema binario.
EJERCICIO 7. Dados dos nmeros enteros N1 y N2, escriba planteos recursivos para:
1. Ver si N1 es prefijo de N2. Ej.: Prefijo(12,123)= S - Prefijo(12,12)= S - Prefijo(12,132)= No. 2. Ver si N1 es sufijo de N2. Ej.: Sufijo(12,312)= S - Sufijo(12,12)= S - Sufijo(12,132)= No.
EJERCICIO 8. Escriba un planteo recursivo para dibujar una media pirmide de dgitos como se muestra en
la siguiente figura. 1 21 321 4321 54321 654321 7654321 87654321 987654321
Nota: Puede resultarle muy til realizar un planteo recursivo para dibujar una fila de la media pirmide.
EJERCICIO 9. Dada una secuencia de nmeros enteros positivos finalizada en -1, escriba un planteo
recursivo para: 1. Sumar todos los enteros de dichas secuencia, sin incluir el -1. Ej.: Para la secuencia 2 5 3 6 12 3 -1 el resultado es 31 2. Determinar el mnimo entero perteneciente a la secuencia. Ej.: Para la secuencia 2 5 3 6 12 3 -1 el resultado es 2
EJERCICIO 11. Definimos inverso simple de una secuencia de caracteres, al inverso de la secuencia sin
sus repeticiones consecutivas. Por ejemplo, el inverso simple de aaabccdddaaebb es beadcba. Escriba un planteo recursivo para obtener el inverso simple de una secuencia de caracteres conociendo su longitud.
EJERCICIO 12. Dado un nmero entero N, escriba un planteo recursivo para determinar cuntos dgitos
pares ocupan posiciones impares (de izquierda a derecha) en N. Ej.: para N=22005 el resultado es 2. Para N=1414 , el resultado es 0
EJERCICIO 13. Los habitantes de Saign - ciudad capital de Vietman del Sur - no son tan pacientes como
los de Hanoi. En consecuencia, decidieron mejorar el juego de Hanoi agregando una torre adicional a las tres torres del juego tradicional. De esta forma, se disponen de 4 torres en total, pudiendo utilizarse dos de ellas como soporte auxiliar. Escriba un planteo recursivo que indique las movidas a realizar en el juego de torres de Saign para mover los discos de la torre 1 a la torre 4.
ELEMENTOS DE PROGRAMACIN - 1ER CUATRIMESTRE DE 2001 - U.N.S. PROFESOR: CARLOS IVN CHESEVAR ASISTENTE: ANDREA SILVETTI
EJERCICIO 3. Utilice recursin mutua para determinar si un nmero positivo N es par, usando como pista
la siguiente afirmacin: Un nmero N es par si su predecesor es impar; un nmero N es impar si su predecesor es par. Escriba el planteo recursivo y su correspondiente implementacin en Pascal.
EJERCICIO 4. Dados dos nmeros N y B, tales que B<N, podemos hacer que N explote usando a B como
bomba. Cuando N explota se parte en dos nmeros N1=(N div B) y N2=N-(N div B). Pero B produce una reaccin en cadena: si N1 (y/o N2) es mayor que B, tambin explota y se parte nuevamente en dos pedazos, segn el criterio anterior. Esto se repite hasta que todos los pedazos resultantes a partir de N sean menores o iguales que B. Ej,: si N=15, y la bomba B=3, el nmero N se parte inicialmente en dos: 15 div 3, y 15-(15 div 3), es decir, 5 y 10. Como ambos son mayores que la bomba, deben estallar en dos. El proceso se repite segn lo muestra la figura. Escriba un procedimiento recursivo Explotar, que dado un nmero N y un nmero bomba B, imprima todos los pedazos que quedan al explotar N usando B. Ej.: En el caso que muestra la figura, deber imprimirse 1,1,3,3,2,1,1,3
EJERCICIO 5. (OPCIONAL) Escribir una funcin EvaluarExpBooleana para evaluar una expresin booleana, cuya definicin est dada por el siguiente diagrama sintctico:
Las letras v y f representan el valor verdadero (true) y falso (false) respectivamente. Los operadores + , * y # corresponden a las operaciones lgicas O (or), Y (and) y No (not) que tienen asociadas las siguientes tablas de verdad. X f f v v Y f v f v X+Y f v v v X f f v v Y f v f v X*Y f f f v X f v #X v f
La funcin al ser invocada, deber leer por teclado una cadena de caracteres, y retornar el valor asociado a la misma. Ej.: para la expresin (v + # (f * v ) + f ) el valor asociado es v y para la expresin v * f + f el valor asociado es f. Nota: se asume que la expresin a evaluar es sintcticamente correcta (esto es, toda expresin ingresada est formada respetando el diagrama anterior).