Implementar a função EXP com as seguintes características:
Recebe um valor de base e um valor de expoente como parâmetros do tipo unsigned int.
Recebe um valor de base e um valor de expoente como parâmetros do tipo unsigned int.
Passo 1
Beleza, o que a questão tá pedindo é simples: criar uma função chamada
EXP
em C (ou linguagem parecida) que receba dois parâmetros do tipo unsigned int
– um é a base e outro é o expoente – e retorne a base elevada ao expoente. O conteúdo aqui envolve noções básicas de laço de repetição (loop) e operação de multiplicação, além de entender a definição matemática de potência.Passo 2
Antes de sair codando, vamos lembrar o que é potência:
- Se a gente tem uma base
e um expoente , a potência é - Um caso importante é quando
: por definição (desde que ).
Então, na nossa função, precisamos:
- Tratar o caso especial de expoente zero.
- Fazer um loop que multiplique a base por ela mesma
vezes.
Passo 3
Vamos pensar no passo a passo lógico (pseudocódigo) antes de traduzir pra C:
- Se
expoente == 0
, retorna 1. - Senão, inicializa uma variável
resultado = 1
. - Faz um loop que vai de 1 até
expoente
, e em cada iteração fazresultado = resultado * base
. - No fim do loop, retorna
resultado
.
Passo 4
Agora monta a função em C usando esse esquema:
unsigned int EXP(unsigned int base, unsigned int expoente) {
unsigned int resultado = 1; // vai guardar b^e
unsigned int i; // contador do loop
if (expoente == 0) {
return 1; // b^0 = 1
}
for (i = 1; i <= expoente; i++) {
resultado = resultado * base; // multiplica base expoente vezes
}
return resultado;
}
Passo 5
O que fizemos aqui?
- Definimos
resultado
como 1 porque se você multiplicar 1 porbase
algumas vezes, vai obter a potência. - Tratamos o caso
expoente == 0
logo de cara. - Usamos um
for
que repete exatamenteexpoente
vezes, acumulando na variávelresultado
. - Ao final,
resultado
vale .
Resposta
unsigned int EXP(unsigned int base, unsigned int expoente) {
unsigned int resultado = 1;
unsigned int i;
if (expoente == 0) {
return 1;
}
for (i = 1; i <= expoente; i++) {
resultado *= base;
}
return resultado;
}