Nesta aula aprenderemos como implementar a função potência recursiva que retorna o valor de x elevado n, dando continuidade ao estudo de programação recursiva com a linguagem C. Os dois valores, x e n serão lidos a partir do teclado.
Para resolver este exercício se faz necessário entender que a potência pode ser calculada facilmente por meio de multiplicações. Veja alguns exemplos:
25 = 2 * 2 * 2 * 2 * 2 = 32
33 = 3 * 3 * 3 = 27
Entendido isso, precisamos identificar nosso ponto de parada. Nesta caso, um ponto de parada interessante que inclusive pode ser digitado pelo usuário como teste, é o n = 0. Qualquer valor elevado a zero é igual a 1 (n0 = 1).
Com estas informações podemos construir nossa função recursiva para a função potência. Se n for igual a zero, então é retornado 1, senão, é calculado a multiplicação de x n vezes.
#include <stdio.h> #include <stdlib.h> int potencia(int x, int n){ if(n == 0) return 1; else return x * potencia(x, n - 1); } int main () { int n, x; printf("Digite o valor para X e para N: "); scanf("%d%d", &x, &n); printf("Resultado de %d elevado a %d: %d\n", x, n, potencia(x, n)); return 0; }
//esta solução aceita potência negativa.
#include
int potencia(int x, int n){
if(n==0)
return 1;
else{
return (x * potencia(x,–n));
}
}
int main(){
int n , x;
printf(“em x elevado a n\n”);
printf(“x =”);
scanf(“%d”,&x);
printf(“n =”);
scanf(“%d”,&n);
if(n>=0)
printf(“%d\n”,potencia(x, n));
else
printf(“%f\n”, 1/(float)potencia(x, -n));
return 0;
}