¿Cuál es la fórmula matemática para revertir un número?

Aquí hay una función para obtener el primer dígito de un entero positivo:

[math] car (x) = \ left \ lfloor \ frac {x} {10 ^ {\ left (\ left \ lfloor \ log x \ right \ rfloor \ right)}} \ right \ rfloor [/ math]

Restando esto de x nos obtiene todos los dígitos excepto el primero:

[matemáticas] cdr (x) = x – \ left \ lfloor \ frac {x} {10 ^ {\ left (\ left \ lfloor \ log x \ right \ rfloor \ right)}} \ right \ rfloor [/ math]

Dado un número, podemos agregar otro dígito al final así:

[matemáticas] agregar (a, b) = 10a + b [/ matemáticas]

Con estos, podemos hacer una función recursiva para invertir un número: quitar el primer dígito, invertir el resto y volver a colocar el dígito al final. El caso trivial es

[matemática] inversa (x) = x [/ matemática] si x <10

[matemáticas] reverse (x) = append (cdr (x), car (x)) [/ math] de lo contrario.

Ummm … ¿qué está invirtiendo un número? Sospecho que quieres calcular el inverso de un número. Si es así, resulta que no hay una fórmula “matemática”; la forma de calcular el inverso de un número es en realidad un proceso de un solo paso, que no debería tomar más de 10 segundos, en el peor de los casos.

Hay dos tipos de inversas:

  1. El inverso aditivo . Para calcular este, deberá restar 1 del número objetivo . Entonces, el inverso aditivo de 0.8 sería 0.2 .
  2. El inverso multiplicativo . Para hacer esto, necesitas dividir 1 por el número objetivo . Entonces, el inverso multiplicativo de 2 será 0.5 .

¡Gracias a Kristen Brockway por señalar que hay 2 tipos de inversas, no una!

algoritmo para programar:

Entrada: num
(1) Inicializar rev_num = 0
(2) Bucle mientras num> 0
(a) rev_num = rev_num * 10 + num% 10;
(b) Divida num entre 10
(3) Devolver rev_num