Algoritmo Recursivo

4 respostas
N

alguém sabe como é o algoritmo recursivo de potência para qualquer base?
abraço

4 Respostas

P
public static double potencia(double y, int k) {
        if (k == 0)
            return 1;
        else
            return y * potencia(y, k - 1);
    }
N

vlw cara! :wink:

Guilherme_Albuquerqu

Mas e para expoentes inteiros negativos, funciona também? Ou só com laços?

ViniGodoy

Todo laço pode ser reescrito na forma de recursão.

No caso desse algoritmo, a adaptação é bastante fácil:

public static double potencia(double y, int k) {
    if (k == 0)
        return 1;

    if (k < 0) 
        return 1.0 / potencia(y, -k);

    return y * potencia(y, k - 1);
}

Ou, se quiser ostentar com uma só linha de código:

public static double potencia(double y, int k) {
    return k == 0 ? 1.0 : 
         k < 0 ? 1.0 / potencia(y, -k) : y * potencia(y, k - 1);
}
Criado 2 de abril de 2008
Ultima resposta 10 de mai. de 2015
Respostas 4
Participantes 4