[DUVIDA] Calcular Potencia sem usar pow

6 respostas
luizaguerra

Preciso criar um metodo que receba x e y e retorne x elevao a y sem utilizar o metodo pow. Sou bem iniciante em java, comecei a criar mas não sei se está certo e estou agarrada para fazer a chamada do método criado.

Se alguem puder me ajudar, fico agradecida!

package pkgExercicio1;

public class CalculaPotencia {
	private int base;
	private int expoente;
	
	public CalculaPotencia(int x, int y){
		base = x;
		expoente = y;
	}
	
	public int Potencia (int xx, int yy){
		int resultado = 0;
		for(int i=0; i<=yy; i++){
			resultado*=xx;
		}
		return resultado;
	}
	
	public void CalculaResultado(int result){
		
		
	}

}

6 Respostas

camarada_du

Você pode fazer dessa forma:

public void testPotencia(int base, int expoente) {
	int resultado= 1;
		
	for (int i = 0 ; i < expoente ; i++) {
		resultado *= base;
	}
	System.out.println(resultado);
}

Espero ter ajudado.

luizaguerra

Vou testar dessa forma para ve rse da certinho dentro do que to querendo… Obrigada!

ViniGodoy

A única diferença significativa entre os dois códigos é que ele inicou resultado com 1 e não com 0. Isso pq 0 é o elemento nulo da multiplicação (qualquer coisa * 0 = 0).
E claro, no fato dele ter dado nomes mais significativos às variáveis.

luizaguerra

Consegui resolver da seguinte forma:

Arquivo 1
package pkgExercicio1;

public class CalculaPotencia {
	//private int base;
	//private int expoente;
		
	public int Potencia (int xx, int yy){
		int resultado = 0;
		if (yy==0){
			resultado = 1;
		}
		else
			for(int i=0; i<=yy; i++){
				resultado = xx;
				resultado*=xx;
			}
		return resultado;
	}
	
}

Arquivo 2

package pkgExercicio1;

public class testaPotencia {

	public static void main(String[] args) {
		CalculaPotencia c = new CalculaPotencia ();
		c.Potencia(3,2);
		System.out.println(c.Potencia(3,2));

	}

}
ViniGodoy

If you wanna see how depth the rabbit hole goes:
http://mathforum.org/library/drmath/view/55896.html

Esse link ensina a fazer com expoentes fracionários.

Se quiser ir mais punk, pode procurar a solução com logs que ele cita.

luizaguerra

ViniGodoy:
A única diferença significativa entre os dois códigos é que ele inicou resultado com 1 e não com 0. Isso pq 0 é o elemento nulo da multiplicação (qualquer coisa * 0 = 0).
E claro, no fato dele ter dado nomes mais significativos às variáveis.

[b]Essa idéia de renomear as variáveis eu vou usar…
Vou trocar por nomes mais fáceis, fica melhor mesmo!

Obrigada[/b]

Criado 26 de abril de 2011
Ultima resposta 26 de abr. de 2011
Respostas 6
Participantes 3