Estuve practicando con estos ejercicios y parece que el método para invertir un número no funciona bien.
Por ejemplo, si le entregamos el 32, daría:
2 + invertir(3)*10 = 2 + 3*10 = 32
int invertir (int n)
{
if (n < 10) //caso base
return n;
else
return (n % 10) + invertir (n / 10) * 10;
}
Pero lo hice así y funciona:
public int invertirNumero(int numero){
if(numero<10){
return numero;
}else{
int contador = 0;
int aux = numero;
while(aux/10!=0){
contador++;
aux = aux/10;
}
return (int)(Math.pow(10, contador))*(numero%10) + this.invertirNumero(numero/10);
}
}
Hola Aqui un aporte
,
utilize String length para identificar el tipo de unidad (../centena/decena) en cada caso.
int invertir(int n){
if (n < 10) //caso base
return n;
return invertir(n / 10) + (n % 10) * (int) Math.Pow(10, ((n + "").Length-1));
}
Y para fibonacci :
int fibonaci(int [] array, int n) {
if (array[n-1] > 0) {
return array[n-1];
}
if (n == 1 || n == 2)
{
return 1;
}
else {
var a = fibonaci(array ,n - 1);
var b = fibonaci(array ,n - 2);
var sum = a + b;
array[n - 1] = sum;
return sum;
}
}