L’obiettivo di questo problema è invertire un numero (es. 123 → 321) senza usare le stringhe (altrimenti la soluzione sarebbe banalmente number.ToString().Reverse()).
La soluzione è molto semplice a patto di conoscere alcune semplici operazioni matematiche di modulo e divisione.
Soluzione
L’idea è creare una variabile di appoggio dove andremo a inserire le varie cifre del numero originale moltiplicandola per 10 in base alla posizione dove vorremo andare ad inserire la cifra all’interno del numero.
Ricorsiva
La soluzione ricorsiva è sicuramente più interessante.
Il piede della ricorsione è che se un numero è minore di 10 esso è già invertito e la ricorsione esce.
Di seguito l’algoritmo come al solito estrare la cifra meno significativa (Come prendere la cifra meno significativa di un numero) e la moltiplica per 100^lunghezza del numero - 1.
Per ottenere la lunghezza del numero utilizzo la tecnica del logaritmo a base 10 (Ottenere il numero di cifre di un numero).
Per esempio se devo invertire 987 devo creare la somma 700 + 80 + 9, quindi 7*10^2 + 8*10^1 + 9*10^0.