If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Calculando a potência de um número

Embora o JavaScript possua uma função pow que calcula as potências de um número, você pode escrever uma função semelhante recursivamente, e ela pode ser muito eficiente. O único problema é que o expoente tem que ser um número inteiro.
Suponha que você queira calcular x, start superscript, n, end superscript, onde x é qualquer número real e n é qualquer número inteiro. É fácil se n é 0, já que x, start superscript, 0, end superscript, equals, 1 não importa o que x seja. Esse é um bom caso de base.
Então agora vamos ver o que aconte quando n é positivo. Vamos começar falando que quando você multiplica as potências de x, você soma os expoentes: x, start superscript, a, end superscript, dot, x, start superscript, b, end superscript, equals, x, start superscript, a, plus, b, end superscript para qualquer base de x e qualquer expoente de a e b. Portanto, se n é positivo e par, então x, start superscript, n, end superscript, equals, x, start superscript, n, slash, 2, end superscript, dot, x, start superscript, n, slash, 2, end superscript. Se você tivesse que calcular y, equals, x, start superscript, n, slash, 2, end superscript recursivamente, então você poderia calcular x, start superscript, n, end superscript as y, dot, y. E se n for positivo e ímpar? Então x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x, e n, minus, 1 ou é 0 ou é positivo e par. Nós acabamos de ver como calcularpotências de x quando o expoente for 0 ou for positivo e par. Portanto, você poderia calcular x, start superscript, n, minus, 1, end superscript recusivamente, e então usar esse resultado para calcular x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x.
E quando n for negativo? Então x, start superscript, n, end superscript, equals, 1, slash, x, start superscript, minus, n, end superscript e o expoente minus, n é positivo uma vez que ele é negação de um número negativo. Então você pode calcular x, start superscript, minus, n, end superscript recursivamente e tomar a sua recíproca.
Colocamndo essas observações juntas, nós temos os seguintes algoritmos de calculos recursivos x, start superscript, n, end superscript:
  • O caso base é quando n, equals, 0, e x, start superscript, 0, end superscript, equals, 1.
  • Se n é positivo e par, calcule recursivamente y, equals, x, start superscript, n, slash, 2, end superscript, e então x, start superscript, n, end superscript, equals, y, dot, y. Note que você pode conseguir utilizar apenas uma chamada recursiva nesse caso, calculando x, start superscript, n, slash, 2, end superscript apenas uma vez, e então você multiplica o resultado dessa chamada recursiva por ele mesmo.
  • Se n é positivo e ímpar, calcule recusivamente x, start superscript, n, minus, 1, end superscript, até que o expoente seja 0 ou positivo e par. Então, x, start superscript, n, end superscript, equals, x, start superscript, n, minus, 1, end superscript, dot, x.
  • se n for negativo, calcule recursivamente x, start superscript, minus, n, end superscript, até que o expoente se torne positivo. Então, x, start superscript, n, end superscript, equals, 1, slash, x, start superscript, minus, n, end superscript.

Este conteúdo é uma colaboração entre os professores de ciência da computação da Universidade de Dartmouth, Thomas Cormen e Devin Balkcom, juntamente com a equipe do currículo de computação da Khan Academy. O conteúdo é licenciado CC-BY-NC-SA.

Quer participar da conversa?

Nenhuma postagem por enquanto.
Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.