Está en la página 1de 9

Asignatura

 Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
 
RESOLVER   CADA   EJERCICIO   EN   UN   FICHERO   SEPARADO.   SE   PROBARÁ   CADA   FICHERO   DE  
FORMA   IDEPENDIENTE.   SI   SE   UTILIZAN   FUNCIONES   DEFINIDAS   EN   OTRO   EJERCICIO  
DEBERÁN  INCLUIRSE  EN  ESE  FICHERO.  PARA  LA  ENTREGA  DE  SIETTE  SE  ENVIARÁ  TODO  EL  
FICHERO.    
 
LA   RELACIÓN   SE   RESUELVE   EN   DOS   SEMANAS,   Y   HAY   DOS   ENTREGAS:   LOS   CUATRO  
PRIMEROS   EJERCICIOS   EN   LA   PRIMERA   SEMANA,   Y   LOS   TRES   ÚLTIMOS   EN   LA   SEGUNDA  
SEMANA.  
 

1.  Secuencia  cíclica  (Septiembre  2013)  


Sea una secuencia cíclica de longitud n una secuencia finita de n
valores donde cada elemento tiene un siguiente. Por ejemplo, la figura 1  
representa una secuencia cíclica con 5 elementos, de modo que el
siguiente a 1 es 3, el siguiente a 3 es 4, el siguiente a 4 es 7, el
siguiente a 7 es 9 y el siguiente a 9 es 1.
9   3  

Supongamos que representamos una secuencia cíclica mediante una


lista de Haskell, de modo que consideramos que el siguiente al
7   4  
elemento de la lista en posición k es el que está en la posición k+1,
salvo para el último elemento de la lista, cuyo siguiente es el primero.

Así, la secuencia cíclica de la figura puede ser representada con la lista [1,3,4,7,9], pero
también, por ejemplo, con la lista [4,7,9,1,3].

Define una función mismoCiclo que tome dos listas y devuelva True si ambas representan la
misma secuencia cíclica. Por ejemplo:
mismoCiclo  [1,3,4,7,9]  [9,1,3,4,7]  =>  True  
mismoCiclo  [1,3,4,7,9]  [1,2,4,7,9]  =>  False  
 
 

2.  Intersección  (Septiembre  2013)  


Define una función interseccion que tome dos listas de enteros ordenadas ascendentemente
(esto es una precondición) y devuelva una lista con la intersección de sus elementos. Por
ejemplo:
interseccion  [1,3,4,7]  [2,3,4,5]  =>  [3,4]  
interseccion  [1,3,3,3,4,4,4,7]  [2,3,3,4,4,4,4,5,5]  =>  [3,3,4,4,4]  

Observa que los elementos en las listas pueden estar repetidos y esto ha de tenerse en cuanta
al calcular el número de veces que aparece dicho elemento en el resultado. En este ejercicio se
valorará que tu solución utilice la precondición para simplificar y hacer eficiente la
implementación de la función.

  1  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
3.  Nicomano.  (Febrero  2017)  
Nicomaco de Gerasa descubrió la siguiente propiedad de los números enteros:

Sumando  el  primer  impar  se  obtiene  el  primer  cubo;   13  =  1         =  1  


Sumando  los  dos  impares  siguientes  se  obtiene  el  segundo  cubo;   23  =  5  +  3       =  8  
Sumando  los  tres  impares  siguientes  se  obtiene  el  tercer  cubo;   33  =  7+  9  +  11     =  27  
Y  así  sucesivamente... 43  =  13+15+17+19     =  64  

 
3.1 Construir   la   función   impares   y   la   función   nicomano.   La   función   impares   devuelve   una   lista  
infinita  de  números  impares.  La  función  nicomano  llamará  a  la  función  impares  y    devolverá  el  
cubo   de   un   numero   n   utilizando   la   propiedad   de   Nicómaco.   Implementar   la   función   usando  
recursividad  (  1  punto)  
take 7 impares  (1, 3, 5, 7, 9, 11, 13, 15)
nicomano 4  64
nicomano 3  27
nicomano 8  512

3.2 Sin   utilizar   las   funciones   anteriores,   sino   por   el   método   aquí   indicado,   construir   la   función  
cubos    que  devuelta  una  lista  infinita  de  los  números  naturales  al  cubo.  Para  ello  se  seguirá  el  
siguiente  algoritmo:  
 
3.2.1   Implementar   la   función   empaqueta   tal   que   dada   una   lista   de   elementos,   devuelva   una   lista  
con   estos   elementos   empaquetados   del   siguiente   modo:   el   primero,   los   dos   siguientes,   los   tres  
siguientes....   hasta   al   final.   Teniendo   en   cuenta   que   la   última   lista   puede   estar   truncada   (es   decir,  
puede  que  no  tenga  n+1  elementos  q  que  la  lista  anterior)    
 
empaqueta [1..10]  [[1],[2,3], [4, 5, 6], [7, 8, 9, 10]]
empaqueta "matematicas" ["m","at","ema","tica","s"]
empaqueta [1..11]  [[1],[2,3], [4, 5, 6], [7, 8, 9, 10] [11]]
empaqueta (take 6 impares)  [[1], [3,5], [7, 9,11]]
 
3.2.2   Implementar   la   función   cubos   (que   no   tiene   ningún   parámetro)   que   utilice   la   función  
empaqueta,   y   devuelva   una   lista   infinita   de   los   cubos   de   los   enteros   positivos.   Implementar   esta  
función  utilizando  funciones  de  orden  superior    
take 5 cubos = [1, 8, 27, 64, 125]
take 10 cubos = [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]

4.  Romanos  (Septiembre  2015)  


En la notación romana para expresar números, los valores de cada una de las letras utilizadas
son los siguientes: M vale 1000, D vale 500, C vale 100, L vale 50, X vale 10, V vale 5 e I vale
1.

Un número romano es una secuencia de letras. Para pasar un número romano a decimal, se
recorren sus letras desde la última a la primera (de derecha a izquierda) y se suman o restan
los valores de cada una de ellas. El valor de la última cifra siempre suma y, para las demás

  2  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
cifras, su valor restará si la cifra que le sigue (cifra a su derecha) es mayor, o sumará en caso
contrario.
Por ejemplo, el número romano MCMXCIX vale 1000 - 100 + 1000 – 10 + 100 - 1 + 10 = 1999.

4.1 Define una función llamada valor que tome como entrada una letra y devuelva su
valor.

valor  ‘I’    1  
valor  ‘X’    10  

4.2 Define la función recursiva romanoADecimal que tome una cadena de caracteres
(correspondiente a un número romano) y devuelva su valor. Resolver este
apartado con recursividad

romanoADecimal  “MCMXCIX”    1999  


romanoADecimal  “XDII”    492  
 
4.3 Define la función romanoADecimal2 que tome una cadena de caracteres
(correspondiente a un número romano) y devuelva su valor. Resolver este
apartado con zipWith

romanoADecimal2  “MCMXCIX”    1999  

4.4 Define la funcion recursiva decimalARomano que dado un número en formato


decimal devuelva el correspondiente número en romano

decimalARomano    1999    “MCMXCIX”    

5.  Variaciones  sin  Repeticion  


Sea  xs  una  lista  con  n  elementos  distintos.  Las  variaciones  ordinarias  (sin  repetición)  de  la  lista  xs  
de   n   elementos   tomados   de   m   en   m   (con   m≤n)   son   todas   las   listas   de   longitud   m   que   se   pueden  
obtener  combinando  los  elementos  de  la  lista  xs,  sin  que  éstos  estén  repetidos  dentro  de  una  misma  
variación.    
5.1 Define  una  función  recursiva  v ar  que  tome  como  parámetros  un  natural  m  y  una  lista  xs  y  
devuelva  las  variaciones  de  xs  tomadas  de  m  en  m:  

var 0 "abc"  [""]


var 1 "abc"  ["a","b","c"]
var 2 "abc"  ["ab","ac","ba","bc","ca","cb"]
var 3 "abc"  ["abc","acb","bac","bca","cab","cba"]
Ayuda:   Puedes   comprobar   que   un   elemento   no   pertenece   a   una   lista   con   la   función   predefinida  
notElem:  

0 `notElem` [1..10]  True


5 `notElem` [1..10]  False

FIN  DE  LA  PRIMERA  ENTREGA  


 

  3  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
6.  Sustituir  Sumando  (Julio  2018)  
Implementar,  utilizando  recursividad,  la  función  sustituirSumando  que  tiene  como  entrada  
una  lista  de  enteros  y  devuelve  como  salida  el  resultado  de  reemplazar  todos  los  pares  de  
valores  consecutivos  iguales  a  x  por  la  suma  de  ambos.  El  proceso  se  repite  con  todas  las  
listas  obtenidas  hasta  que  no  haya  ningún  par  de  números  consecutivos  iguales.  
 
Para  entenderlo  mejor,    el  proceso  se  describe  por  pasos.  Es  importante  ver,  que  cuando  se  
hace  la  primera  sustitución  se  repite  el  proceso  con  el  resto  de  la  lista  sin  procesar  (se  pone  
en  negrita  en  el  ejemplo):  
[6, 3, 1, 1, 3, 3, 2, 1, 1]
[6, 3, 2 3, 3, 2, 1, 1]
[6, 3, 2, 6, 2, 1, 1]
[6, 3, 2, 6, 2, 2] --- comprobar que no hay sucesivos iguales
[6, 3, 2, 6, 4]
 [6, 3, 2, 6, 4]

 
Ejemplos  
sustituirSumando [6, 3, 1, 1, 3, 3] [6,3,2,6]
sustituirSumando [7, 3, 1, 1, 2, 2]  [7,3,4,2]
sustituirSumando [6, 3, 1, 1, 3, 3, 2, 1, 1]  [6,3,2,6,4]
sustituirSumando [6, 3, 1, 1, 3, 3, 2, 1, 1, 4] [6,3,2,6,8]

7.    lookANDsay  (Septiembre  2016)  


La  secuencia  look-­‐and-­‐say  es  una  secuencia  recursiva  de  números  que  ha  sido  definida  y  
estudida  por  John  Conway.  La  manera  de  definir  la  secuencia  es  la  siguiente:  
- Se  toma  un  número  de  entrada  
- Se  mira  el  número  y  visualmente  se  agrupan  los  números  que  tienen  el  mismo  dígito  
- Se  dice  el  número  de  izquierda  a  derecha,  grupo  por  grupo  diciendo  cuantos  dígitos  hay  y  luego  
el  dígito  que  es.  Asi  para  todos  los  números  de  la  secuencia.    
- Ese  el  número  siguiente  de  la  secuencia.  
 
Ejemplo,  si  empiezo  con  el  número  1  
1  (un  1)    1  1    (dos  uno)    2  1    (un  dos)  (un  uno)  1  2  1  1    (un  uno)  (un  dos)  (dos  1s)    1  1  12  2  1  
 
7.1   Definir   la   función   contar   que   recibe   como   parámetro   una   secuencia   y   devuelve   una   lista  
don   dos   elementos   el   número   de   veces   que   está   éste   repetido   el   primer   elemento   de   la  
secuencia  (hasta  que  aparece  uno  distinto  e  independientemente  de  si  luego  aparece  en  el  resto  
de  la  secuencia)  y  el  elemento.  Implementar  la  función  usando  recursividad:  
contar [1,1,1,2,2,1,1,1]  [3, 1] -- al principio, el 1 está 3 veces
contar [2, 1]  [1, 2] –- el 2 está una vez
contar [3,1,1,3,1,4,1,1,3,1,1,2]]  [1, 3] --al principio, el 3 esta una vez

7.2     Definir   la   funcion   haskell   las   (de   look-­‐and-­‐say)   tal   que   dado   un   número   de   inicio   y   un  
número  n  de  términos  devuelva  la  secuencia  de  n  términos  correspondiente:  
las [1] 6 
[[1],[1,1],[2,1],[1,2,1,1],[1,1,1,2,2,1],[3,1,2,2,1,1]]

las [2] 7 
[[2],[1,2],[1,1,1,2],[3,1,1,2],[1,3,2,1,1,2],[1,1,1,3,1,2,2,1,1,2],
[3,1,1,3,1,1,2,2,2,1,1,2]]

  4  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
 
 
7.3.  Utilizando  las  funciones  definidas  en  el  apartado  anterior  que  sean  necesarias,  definir  en  
haskell   la   función   las’   (look-­‐and-­‐say’)   tal   que   dado   un   número   de   inicio     devuelva   la  
secuencia  infinita  look-­‐and-­‐say:  
 
take 6 (las' [1]) 
[[1],[1,1],[2,1],[1,2,1,1],[1,1,1,2,2,1],[3,1,2,2,1,1]]

take 7 (las' [2]) 


[[2],[1,2],[1,1,1,2],[3,1,1,2],[1,3,2,1,1,2],[1,1,1,3,1,2,2,1,1,2],
[3,1,1,3,1,1,2,2,2,1,1,2]]
 

8.  Ley  Dohnt  (Sept  2017)  


 
El sistema d'Hondt es un método de promedio mayor para asignar escaños en sistemas de
representación proporcional por listas electorales. Es el método que se utiliza en España
para el reparto de votos en las elecciones oficiales. Explicaremos cómo funciona, con una
versión simplificada de un ejemplo tomado de queaprendemoshoy.com.

Supongamos que en la circunscripción X, a la que corresponden 5 escaños, el resultado


de la votación a la que se presentaron 4 partidos A, B, C y D, ha sido el siguiente
respectivamente: 258020 votos, 168030 votos, 114040 votos y 60050 votos. El método
de reparto es el siguiente, en el que por simplicidad, vamos a considerar que únicamente
se trabaja con números enteros:

i) Se dividen los votos obtenidos por cada candidatura entre 1, 2, 3… hasta completar el
número de escaños a repartir, que en este caso hemos fijado en 5. De este modo, tenemos
la siguiente matriz bidimensional con una fila por cada partido (sombreado en esta tabla)

ENTRADA CALCULOS INTERMEDIOS SALIDA


Votos Escaños
Partidos nº votos/1 nº votos/2 nº votos/3 nº votos/4 nº votos/5
obtenidos obtenidos
Partido A 258020 258020 129010 86006 64505 51604 3
Partido B 168030 168030 84015 56010 42007 33606 1
Partido C 114040 114040 57020 38013 28510 22808 1
Partido D 60050 60050 30025 20016 15012 12010 0

ii) Elegiremos de la tabla los 5 cocientes más altos (casillas en rojo en las columnas de
cálculos intermedios), de forma que al partido A corresponderán tres escaños, al partido
B un escaño y al C otro escaño respectivamente. El partido D quedará sin ningún escaño.

Nota de implementación: Utilizar el tipo Int en lugar del tipo Integer, en este problema
 

  5  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
1)   Implementar   la   función   fvaloresMasAltos   tal   que   dada   una   matriz   de   números  
enteros   todos   diferentes   y   un   numero   n,   devuelva   los   n   números   más   altos   de   esa  
matriz.    
matriz  [[23,21,12,15,24],[14,45,21,34,10],[46,36,124,12,10],[12,33,68,29,1]]
fvaloresMasAltos matriz 5 [124,68,46,45,36]
fvaloresMasAltos matriz 7  [124,68,46,45,36,34,33]

2)  Implementar  la  función  buscaPosicion  que  recibe  como  entrada  un  elemento  y  
una   matriz,   y   devuelve   la   posición   (x,   y)   que   ocupa   ese   elemento   en   la   matriz.   Se  
puede   suponer   que   todos   los   elementos   de   la   matriz   son   diferentes.   Si   no   encuentra  
el   elemento,   la   función   devolverá   [0,0].   Implementar   la   función   con  
recursividad(1punto)    
matriz  [[23,21,12,15,24],[14,45,21,34,10],[46,36,124,12,10],[12,33,68,29,1]]
buscaPosicion matriz 23  (1,1)
buscaPosicion matriz 45  (2,2)
buscaPosicion matriz 68  (4,3)
buscaPosicion matriz 99  (0,0) – no está en la matriz

3) Implementar  la  función  matrizDhont  que  recibe  la  lista  de  partidos  y  votos  y  el  de  
puestos  a  repartir,  y  devuelve  una  lista  de  lista  de  enteros  que  se  corresponde  con  la  
tabla  de  votos  repartidos  (la  tabla  gris  del  ejemplo).  Resolver  esta  función  aplicando  
listas  por  comprensión    
matrizDhont [("A",258020),("B",168030),("C",114040),("D",60050)] 5 
[[258020,129010,86007,64505,51604], [168030,84015,56010,42008,33606],
[114040,57020,38013,28510,22808],[60050,30025,20017,15012,12010]]
 
4)Utilizando  las  funciones  anteriores  y  las  que  considere  necesarias,  implemente  la  
función   reparto   que   dados   los   resultados   de   una   votación   y   el   número   de   puestos   a  
repartir,  devuelva  la  asignación  de  escaños,  según  el  algoritmo  anterior.  Así  para  el  
ejemplo  descrito,  devolvería    
 
reparto [("A",258020),("B",168030),("C",114040),("D",60050)]5
[("A",3),("B",1),("C",1),("D",0)]

reparto [("A",258020),("B",168030),("C",114040),("D",60050)] 6  [("A",3),("B",2),("C",1),("D",0)]

reparto [("A",258020),("B",168030),("C",114040),("D",60050)] 2  [("A",1),("B",1),("C",0),("D",0)]


 
 
de   modo   que   preMax   xs   n   parte   la   lista   xs   en   dos   trozos.   El   primero   contiene   el  
mayor   segmento   inicial   de   xs   tal   que   la   suma   de   sus   elementos   sea   menor   o   igual  
que  n,  y  el  segundo  contiene  el  resto  de  la  lista  xs.  Se   puede   usar   la   función   partir  
anterior  
 
Por  ejemplo      
preMax [1,2,3,1,3,2,6,1] 9  ( [1,2,3,1], [3,2,6,1] )

  6  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
9.  Raíz  Cuadrada  
El  cálculo  de  la  raíz  cuadrada  con  “lápiz  y  papel”  se  realiza  tal  y  como  se  indica  en  la  hoja  
adjunta,   para   quien   no   lo   recuerde   .   Para   ello   se   utilizan   únicamente:   sumas,   restas   y  
productos  de  números  enteros.    Se  pide  
1) El  método  indicado,  parte  de  que  la  persona  que  resuelve  la  raíz  cuadrada  de  números  de  
dos  cifras  (paso  2  del  método  explicado  en  la  hoja  adjunta)  .  En  nuestro  caso,  nos  lo  va  a  
devolver  la  función  raizEntera.    
 
Definir  una  función  raizEntera  tal  que  dado  un  número  positivo,  de  dos  cifras  
devuelva  el  número  entero  cuyo  cuadrado  está  más  cercano  al  valor  dado.  Utilizar  
listas  por  comprensión  para  resolver  este  apartado    
raizEntera 45  6 (36 es el cuadrado menor y más cercano a 45)
raizEntera 49  7
raizEntera 48  6 (36 es el cuadrado menor, mas cercano a 48,
porque aunque el 49 es más cercano no es menor que 48)
 
2) Utilizando  únicamente  las  funciones,  suma,  resta,  producto  (no  utilizar  en  ningún  momento  
sqrt),  raizEntera  y  las  funciones  recursivas  que  considere  necesario  implemente  una  función  
que   devuelva   la   raizCuadrada   de   un   número   positivo   siguiendo   el   método   descrito,  
devolviendo   dos   valores,   la   raíz   y   el   resto.   Para   cada   función   auxiliar,   indíquese   con   una  
explicación   textual   entre   comentarios,   qué   realiza,   poniendo   un   ejemplo   de   su   entrada   y  
salida.    
raizCuadrada 123956  [352,52]
raizCuadrada 25  [5,0]
raizCuadrada 89224  [298,420]

3) Implementar  una  función  quickcheck  que  permita  demostrar  la  corrección  de  la  función  
raizCuadrada  del  apartado  anterior    
CALCULO  DE  LA  RAIZ  CUADRADA.  
 
1. Agrupamos  por  parejas  empezando  a    contar  desde  las  unidades  
las  
 
 
2.  unidades.  Por  ejemplo  para  125,  salen  dos  parejas  1-­‐25    
2.Calculamos  la  raíz  entera  de  la  primera  pareja  

3.  Restamos  el  cuadrado  de  3  a  la  primera  pareja  del  


radicando  (a  la  izquierda),  y  un  queda  un  valor  –  en  este  
caso,  es  el  3-­‐  

 
 
4.  Bajamos  la  siguiente  pareja  y  la  unimos  al  valor  
calculado  en  el  caso  anterior  

  7  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
 
5.  Multiplicamos  por  2  el  valor  que  tenemos  en  la  
parte  derecha,  y  lo  apuntamos  aparte  

6.  Buscamos  un  numero  x  para  los  dos  huecos  de  


modo  que  ese  producto  sea  el  mayor  posible  pero  que  
no  supere  al  valor  que  tenemos  a  la  izquierda.    
En  este  caso  un  numero  (6x  *  x)  tal  que  x  tenga  una  
cifra  y  el  resultado  de  esa  cuenta  sea  menor  que  339.  
En  este  caso  el  valor  seria  “5”  

 
 
7.  Subimos  el  5  a  la  parte  superior  derecha,  lo  unimos  
al  numero  existente  a  la  derecha.      
8.  Restamos  el  producto  obtenido  de  la  expresión  del  
apartado  6m    al  valor  que  teníamos  a  la  izquierda,  y  
nos  da  14.  

 
 
9.  Repetimos  el  proceso  con  la  siguente  pareja,  y  
asi  sucesivamente  hasta  que  hayamos  usado  
todas  las  parejas.  
10.  Como  resultado  se  devuelve  el  valor  de  la  
parte  derecha,  que  es  la  raiz  cuadrada,  y  el  
calculo  restante  de  la  parte  izquierda,  que  es  el  
resto  

10.  Kaprekar.  Septiembre  2017  


Un   número   de   Kaprekar     es   un     número   entero   no   negativo   tal   que   los   dígitos   de   su   cuadrado   se  
pueden  separar  en  dos  números  que  sumados  dan  el  número  original.    
El  número  297  es  un  número  de  Kaprecar:  
 
-­‐ El  cuadrado  del  número  297  es  88209  
-­‐ Si  comprobamos  todas  las  posibles  separaciones  en  dos  números  y  su  correspondiente  suma  
vemos  que  una  de  ellas  coincide  con  el  original:  
8  +  8209  =  8217  es  diferente  de    297  
88  +  209  =  297  =  297        Es  número  de  Kaprekar  
882  +  09  =  891      es  diferente  de    297  
8820  +  9  =  8829  es  diferente  de    297  
   
El  número  345  no  es  número  de  Kaprekar:  
-­‐ El  cuadrado  es  119025  
-­‐ Comprobamos   las   sumas   de   las   posibles   separaciones   y   vemos   que   ninguna   coincide   don   el  
original  
1  +  19025  =  19026    diferente  de    345  
 11  +  9025  =  9036  diferente  de  345  

  8  
Asignatura  Informática  
  Grado  en  Matemáticas.  Facultad  de  Ciencias  
  Universidad  de  Málaga  
    @  José  E.  Gallardo,  Beatriz  Barros,  Pablo  López  
2018/2019  

Relación  de  Ejercicios  3.  RECURSIVIDAD  


 
 
 119  +  025  =  144    diferente  de  345  
 1190  +  25  =  1215  diferente  de  345  
 11902  +  5  =  11907  diferente  de    345        No  es  número  de  Kaprekar  
 
Queremos   definir   la   función   esKaprekar,   con   recursividad,   que   devuelva   True   si   el   número   es   de  
Kaprekar  y  False  en  caso  contrario  
 
esKaprekar 297  True
esKapreKar 345  False

  9  

También podría gustarte