Vous êtes sur la page 1sur 5

Universidad Nacional del Sur Segundo Cuatrimestre 2011

Departamento de Ciencias e Ingeniera de la Computacin Resolucin de Problemas y Algoritmos

TrabajoPrcticoN10 Recursividad
Ejercicio1.ImplementeenPascallassiguientesdefinicionesrecursivas. a)

1 ,N = 0 h( N ) = h ( N 1) + h( N 1) , N > 0

0 ,x = 0 b) g ( x, y ) = 0 ,y=0 1 + g ( x 1, y 1) , x > 0 y > 0

c)

1 f (i ) = 1 + f (i 1) f (i 1)

,i = 0 , si i es par , si i es impar

d) knuth (i ) =

1 ,i = 0 1 + min(2 knuth (i / 2),3 knuth (i / 3)) , i 0

Ejercicio2.ConsidereelsiguienteprogramaescritoenPASCALyrealiceunatrazasuponiendoqueseingresa 1234:
program inverso; function exponente(n,e:integer):integer; begin if (e = 0) then exponente := 1 else exponente := exponente(n,e-1) * n; end; function cantDigitos(n:integer):integer; begin if (n > -10) and (n < 10) then cantDigitos := 1 else cantDigitos := 1 + cantDigitos(n div 10); end; procedure invertir(n:integer; var inv:integer); var aux:integer; begin if (n > -10) and (n < 10) then inv := n else begin invertir(n div 10, aux); inv := (n mod 10) * exponente(10,cantDigitos(n)-1) + aux; end; end; var n,m:integer; begin write('Ingrese un nro:'); readln(n); invertir(n,m); writeln('Su inverso es:',m); end.

Universidad Nacional del Sur Segundo Cuatrimestre 2011

Departamento de Ciencias e Ingeniera de la Computacin Resolucin de Problemas y Algoritmos

Ejercicio3.Losnmerosnaturalespuedenserrepresentadoscomounafuncinunariausualmentellamadasn. Porejemplo: SN
s ( 0 SN )

0=0 1=s(0) 2=s(s(0)) 3=s(s(s(0))) 7=s(s(s(s(s(s(s(0)))))))

a. Realiceunprocedimientorecursivoquerecibaunenteropositivoymuestreporpantallalarepresentacinde dichonmeroenformatosn(0). b. Realiceunafuncinrecursivaquerecibaunasecuenciadecaracteresingresadaportecladorepresentandoun nmeroennotacinsn(0)retorneelenterocorrespondiente. Ejercicio 4. Escriba el planteo recursivo e implemente en Pascal los siguientes incisos teniendo en cuenta las restricciones impuestas para cada caso. Obviamente, podrn ser utilizadas en todos los casos las estructuras de control y llamadas a procedimientos y funciones necesarios siempre y cuando los mismos tambin respeten las restriccionesantesmencionadas. a) Unafuncinrecursivasuma:NNNutilizandosolamentecomoprimitivassuccypred. b) Una funcin recursiva resto: NNN que obtenga el resto (mdulo) de la divisin entera utilizando como nicaoperacinaritmticalaresta(nopuedeusarsediv).Ej.:resto(5,2)=1,resto(8,2)=0,resto(1,2)=1. c) UnafuncinrecursivadivEntera:NNNqueobtengaelcociente(resultado)deladivisinenterautilizando comonicasoperacionesaritmticaslasumaylaresta. d) Una funcin recursiva cuadrado: NN que obtenga el cuadrado de un nmero natural distinto de cero utilizandoexclusivamenteel siguientemtodo:elcuadrado(k)es iguala la sumade loskprimerosnmeros impares.Porejemplo,elcuadradode4es1+3+5+7=16. Ejercicio 5.EscribaunplanteorecursivoeimplementeambosincisosenPascalconsiderandocuidadosamentesilos definircomoprocedimientosocomofunciones: a) Mostrarlosnmerosdel1alNenordencreciente. b) Mostrarlosnmerosdel1alNenordendecreciente. Ejercicio6.EscribaunplanteorecursivoeimplementeenPascallossiguientesincisos: a) UnafuncinrecursivaquedeterminesiundgitoDnoperteneceaunnmeroenteropositivoN.Ej.:siN=1323 yD=5elresultadoesVerdadero,ysiD=1elresultadoesFalso. b) Unafuncinoprocedimientoquecuentelacantidaddedgitosparesenunnmeroentero.Ej.:sielnmeroes 22005elresultadoes4,ysifuera35elresultadoes0. c) Una funcin o procedimiento que cuente la cantidad de dgitos pares que ocupan posiciones impares (identificndolasdeizquierdaaderecha)enunnmeroentero.Ej.:sielnmeroes22005elresultadoes2,ysi fuera1414elresultadoes0

Universidad Nacional del Sur Segundo Cuatrimestre 2011

Departamento de Ciencias e Ingeniera de la Computacin Resolucin de Problemas y Algoritmos

Ejercicio7.Considerelasiguientefuncinrecursiva:
function misterio(a,b:integer):integer; begin if (b = 0) thenmisterio := 0 elseif (b mod 2 = 0) thenmisterio := misterio(a+a, b div 2) elsemisterio := misterio(a+a, b div 2) + a; end;

a) Realiceunatrazaparalassiguientesllamadas:
i. misterio(2,25);

ii. misterio(3,11); b) Determinequefuncinmatemticadefinemisterio. c) Sisereemplazaenlalnea3por misterio := 1ylasoperaciones+por*enlaslneas4y5,Qufuncin matemticaquedadefinida? Ejercicio8.EscribaunplanteorecursivoeimplementeenPascallossiguientesincisos: a) Una funcin recursiva que determine si un nmero natural es potencia de 2. Ej.: espot2(33)=false, espot2(64)=true. b) UnafuncinrecursivaquedeterminesidgitoDestubicadoenlaposicinmssignificativadeunnmero natural.Ej.:pmasS(2,2345)=true,pmasS(6,5604)=false,pmasS(7,945)=false. c) Una funcin recursiva que determine si un nmero natural P es prefijo de un nmero natural Q. Ej.: esPrefijo(25,2545)=true,esPrefijo(4,5604)=false,esPrefijo(459,45)=false,esPrefijo(25,25)=true. d) Una funcin recursiva que determine si un nmero natural P es sufijo de un nmero natural Q. Ej.: esSufijo(25,2545)=false,esSufijo(4,5604)=true,esSufijo(459,45)=false,esSufijo(25,25)=true. Ejercicio9.Realiceunatrazasuponiendoqueseproducelasiguientellamadaalprocedimientorecursivoex237(6)y muestrelainformacinqueseimprimirenpantallacomoresultadodesuejecucin. procedure ex237(n:integer); begin if (n>0) then begin writeln(n); ex237(n-2); ex237(n-3); writeln(n); end;
end;

Ejercicio10.Escribaunplanteorecursivoydefinaprocedimientosofuncionesrecursivosparacadacaso: a) Leerunacadenadecaracteresdelongitudarbitrariafinalizadaen#ymostrarlacadenaenordeninverso.Ej.: sisetipeaanimal#deberimprimirseenpantallalamina b) Leerunacadenadecaracteresdelongitudarbitrariafinalizadaen#ymostrarlacadenaenordeninversosin mostrarlasvocales.Ej.:sisetipeaanimal#deberimprimirseenpantallalmn

Universidad Nacional del Sur Segundo Cuatrimestre 2011

Departamento de Ciencias e Ingeniera de la Computacin Resolucin de Problemas y Algoritmos

Ejercicio 11. Suponiendo que cuenta con un archivo de caracteres F, escriba un planteo recursivo y defina procedimientosofuncionesparacadacaso: a) Mostrar el contenido del archivo en orden inverso pero las maysculas como minsculas y las minsculas comomaysculas. Ej.:sielarchivotieneloscaracteresAniMal feRozdeberimprimirseenpantallaZOrEFLAmINa b) Mostrarelcontenidodelarchivodelasiguientemanera:losdgitosenelordeningresado,luegolasletrasen ordeninverso,considerandoquelosdemscaracteresnodebenimprimirse. Ej.:sielarchivotieneloscaracteres12 ani 4 + mal 6deberimprimirseenpantalla1246lamina Ejercicio12.Realiceprocedimientosrecursivosqueprocesenunasecuenciadecaracteresfinalizadaen.ymuestren: a) La secuencia original (sin el terminador) seguida de secuencia original pero con sus caracteres en orden inverso.Porejemplo,silasecuenciaesA1#B2-C3$D.deberimprimirA1#B2-C3$DD$3C-2B#1A b) Loscaracteresdelasecuenciaoriginalqueseencuentranenposicionesimparesenordencreciente,seguidos porloscaracteresqueseencuentranenposicionesparesenordendecreciente.Seconsiderarcomoposicin 1 a la posicin del primer caracter de la secuencia, posicin 2 a la posicin del segundo caracter y as sucesivamente.Porejemplo,silasecuenciaesABCDEF.deberimprimirACEFDB

ABC D E F .
1 2 3 4 5 6 7

AC E F D B
1 3 5 6 4 2

Ejercicio13.Definaprocedimientosofuncionesrecursivosquepermitaleerunafraseterminadaenpuntoy contarlacantidaddepalabrasdedichafrase.Porejemplo,silafraseingresadaes"Que lindo da."deber devolver3,ysilafrasefuera.deberdevolver0.


Frase
Palabra Palabra . Frase

Palabra

vacia Caracter Palabra

Ejercicio14.Escribaunplanteorecursivoydefinaprocedimientosofuncionesrecursivosparacadacaso: a) Leerunarchivodecaracteresydeterminarsiseencuentraordenadoalfabticamente. b) Leerunarchivodecaracteresydeterminarlacantidaddevocalesyconsonantesdelmismo c) Leerunarchivodecaracteresydeterminarsihayalgndiptongoenelmismo. Ejercicio 15. Escriba el planteo recursivo e implemente en Pascal una funcin recursiva que calcule la suma de los dgitosqueocupanposicionesimparesparaunnmeronatural.Seconsideraquelaposicin1eslaposicindeldgito menossignificativo(lugardelaunidad),laposicin2eslaposicindeladecena,etc.Porejemplo,siseconsiderael natural587,el7estenlaposicin1,el8enlaposicin2yel5enlaposicin3.Enelejemplo,lafuncindeberia retornar12(7+5). Ejercicio 16. Escriba el planteo recursivo e implemente en Pascal un procedimiento o funcin que determine si los dgitosdeunnmeronaturalestndispuestosdeformacreciente,estoes,si N = d m d m 1 K d1 d 0 y i (0 i m ) se verificaque d i +1 d i .Porejemplo:para1227,359,88o139deberaretornarverdadero.

Universidad Nacional del Sur Segundo Cuatrimestre 2011

Departamento de Ciencias e Ingeniera de la Computacin Resolucin de Problemas y Algoritmos

Ejercicio17.Dadounnmeronatural,definiremoscomosunmeropromedioalnmeroqueseobtienede sumar sus dgitos impares y restar sus dgitos pares. Por ej.: el nmero promedio de 318547 es 4 esto es, numeroPromedio(318547)=numeroPromedio(31854)+7=numeroPromedio(3185)4+7= EscribaelplanteorecursivoeimplementeenPascalunafuncinobtengasunmeropromedio.
Ejercicio18.Escribaunplanteoyunprocedimientorecursivoparaimprimirunamediapirmidededgitoscomose muestraenlasiguientefigura.Utiliceunprocedimientorecursivoparagenerarcadafiladelamediapirmide. 1 21 321 4321 54321 654321 7654321 87654321 987654321 Ejercicio19.Teniendoencuentalassiguientesdefinicionesrecursivasparalafuncinpotencia:

,n = 0 1 xn = n 1 ,n > 0 x x
Potencia1 a. Realicefuncionesparacadaunadelasdefiniciones.

(x 2 )n / 2 x = ( n 1) / 2 x (x 2 )
n

si n es par si n es impar

Potencia2

b. Cuantasllamadasalafuncinpotenciaserequerirnparacomputar36,37y38? c. Comparecuantasllamadasrecursivasserealizanenpotencia1yenpotencia2paraloscasosmencionados enelincisoanterior. Ejercicio 20. Dada una secuencia de nmeros enteros positivos finalizada en 1 (el cual no se considera parte de la misma),escribirunplanteorecursivoylacorrespondienteimplementacin(funcinoprocedimiento)para: a) Sumartodoslosenterosdedichassecuencia.Ej.:Paralasecuencia25361231elresultadoes31. b) Mostrarporpantallatodoslosvaloresdelasecuenciaqueseandivisiblesporelltimovalordelamisma. c) Calcularelpromediodelosvaloresdelasecuencia. d) Determinar el kesimo elemento de la secuencia comenzando desde adelante. El valor k debe ser proporcionadoporelusuario.Ej.:Paralasecuencia25361231yk=4elresultadoes6. Ejercicio21.Resuelvalosincisosaybdelejercicioanterior,peroconsiderandoquecuentaconunarchivodenmeros enteros

Vous aimerez peut-être aussi