Respuestas para Pensar

Un complemento para el Blog del querido profesor Nestor del Prado en Cubadebate

  • Inicio
  • Explicaciones y Respuestas
  • Retos y Soluciones
  • ¿Cómo lo hice?
  • Programadores
  • Curiosidades
  • Acerca de

Función recursiva para obtener números capicúas

3 septiembre, 2019 by yosue1970 Leave a Comment

Yosue dijo:

Existen varias formas para obtener un número capicúa, en este espacio desarrollaré una de ellas, utilizando fórmulas matermáticas, conozco otra  y otra utilizando funciones de texto, pero esa no la escribiré.

Dado un número natural de más de dos cifras podemos obtener  dos números capicúas utilizando sus cifras, uno de cifras pares y otro de cifras pares.

** Visual Basic para Excel por lo fácil del problema **

Primero tenemos que hacer una función recursiva para obtener el número con las cifras invertidas. (Aquí ponemos una pequeña trampita, sumamos 10 a cada dígito para poder extraer los números invertidos cuando contienen la cifra cero.)

Function Inverso(n) As Integer
If n >= 10 Then
Inverso = 10 + (n Mod 10) * (10 ^ (Int(Log(n)))) + Inverso(Int(n / 10))
Else
Inverso = 10 + n
End If
End Function

Ahora las dos funciones para determinar el capicúa, una Par y otra Impar, porque para cada número n se pueden formar 2 números capicúas con los dígitos que tiene, una con número de cifras Par y otro con número de cifras Impar.

Public Function CapicuaPar(n) As Integer

If n > 0 Then
   CapicuaPar = n * (10 ^ (Int(Log(n)) + 1)) - (Int(Log(n)) + 1) * 10 + Inverso(n)

Else
   CapicuaPar = "No existe"
End If
End Function

Public Function CapicuaImpar(n) As Integer
if n>10 then
   CapicuaImpar = n * (10 ^ (Int(Log(n)))) - (Int(Log(n))) * 10 + Inverso(Int(n / 10))
else
   CapicuaImpar = n
end if
End Function

Notas:

1-La única dificultad de este procedimiento es que al usar un procedimiento recursivo “Inverso(n)”, la pila tiende a desvordarse en ordenadores con poca potencia.

2-Log(n) significa logaritmo de base 10 de n. Esto se utiliza para determinar la cantidad de dígitos del número.

3-En el caso de cuando n sea de un dígito, la función impar es el mismo n.

Ejemplos.

  n CapicuaImpar(n) CapicuaPar(n)
1 0 0 No Existe
2 1 1 11
3 5 5 55
4 10 101 1001
5 11 111 1111
6 13 131 1331
7 20 202 2002
8 23 232 2332
9 99 999 9999
10 100 1001 100001
11 101 10101 101101
12 110 11011 110011
13 999 99999 999999
14 1000 1000001 10000001
15 1001 1001001 10011001
16 1050 1050501 10500501
17 1100 1100011 11000011

!Qué le aproveche…!

Filed Under: Programadores

Deja un comentario Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Últimas Entradas

  • Respuesta Números Malvados y Odiosos. 26 septiembre, 2019
  • Función recursiva para obtener números capicúas 3 septiembre, 2019
  • Código Visual Basic (Excel) para descifrar suma de cinco números (diferentes) oblongos que suman 540 19 agosto, 2019
  • Si la suma de cinco números oblongos menores de 300 es igual a 540 ¿Cuáles son esos cinco números? 15 agosto, 2019
  • Halle cinco números oblongos cuya suma sea igual a 99. 12 agosto, 2019

Comentarios

  • yosue1970 en Si la suma de cinco números oblongos menores de 300 es igual a 540 ¿Cuáles son esos cinco números?
  • Nestor del Prado Arza en Si la suma de cinco números oblongos menores de 300 es igual a 540 ¿Cuáles son esos cinco números?
  • yosue1970 en Respuesta a “Ejes rotando y tú calculando; y además completar refranes”
  • cam en Respuesta a “Ejes rotando y tú calculando; y además completar refranes”

Encuestas

¿Cómo es mi sitio?

Ver resultados

Cargando ... Cargando ...

Acceso al Sitio

  • Registrarse
  • Acceder
  • RSS de las entradas
  • RSS de los comentarios
  • WordPress.org
  • Inicio
  • Explicaciones y Respuestas
  • Retos y Soluciones
  • ¿Cómo lo hice?
  • Programadores
  • Curiosidades
  • Acerca de

Copyright © 2019 · Enterprise Pro Theme on Genesis Framework · WordPress · Log in