Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Problema. Método que reciba un entero y lo escriba al revés Problema . Función que calcule el máximo común divisor
Ejemplo: invertir(345); escribe 543. Ejemplos: mcd(18,24)=6, mcd(9,4)=1
static public void invertir(int x){...}
Solución 1: “fuerza bruta”
iterativa recursiva static public int mcd(int x,int y){
while( x>=10 ){ if( x>=10 ){ int max=1, i=2;
U.print(x%10); U.print(x%10); while( i <= Math.min(x,y) ){
x = x/10; invertir(x/10); if( x%i==0 && y%i==0 ) max=i;
} }else i = i + 1;
U.print(x); U.print(x); }
return max;
recursiva abreviada }
U.print(x%10); //escribir último dígito Nota.
if( x >= 10 ) //si tiene más dígitos mcd(18,24) realiza 17 iteraciones.
invertir(x/10);// invertirlos mcd(9,4) realiza 3 iteraciones.
mcd(x,y) realiza Math.min(x,y)-1 iteraciones.
Solución 2 Solución 3
static public double potencia(double x,int y){ xy = x xy-1 si y es impar
if(y==0) return 1.0; xy = xy/2 xy/2 si y es par
return x * potencia(x,y-1);
} static public double potencia(double x,int y)
static public void main(String[]x)throws IOException{ {
while(true){ if(y==0)
int n=U.readInt(“n?”); return 1.0;
if(n==0) break; else if(y%2==1) //impar?
U.print(“2^”+n+”=”); return x * potencia(x,y-1);
double p=potencia(2,Math.abs(n)); else{
if(n>0) double aux=potencia(x,y/2);
U.println(p); return aux*aux;
}
else
}
U.println(1/p);
}
}
Solución 4