Crie um programa em
, que contenha uma função recursiva que receba dois inteiros positivos k e n e calcule
. Utilize apenas multiplicações. O programa principal deve solicitar ao usuário os valores de k e n e imprimir o resultado da chamada da função.
Passo 1
O enunciado pede um programa em C que leia dois inteiros positivos
e
e calcule, de forma recursiva e usando apenas multiplicações, o valor de
O conteúdo envolvido aqui é recursão e o uso da propriedade
com um caso base para interromper a recursão.
Passo 2
Devemos identificar o caso base da recursão. Pela definição de potência:
Logo, se
, voltamos imediatamente o valor
, sem fazer mais chamadas recursivas.
Passo 3
Para
, usamos a relação recursiva
Ou seja, nossa função recursiva recebe
e devolve
Passo 4
Agora implementamos a função recursiva em C. Ela testa se
é zero e, em caso contrário, faz a chamada recursiva:
int power(int k, int n) {
if (n == 0) {
return 1;
} else {
return k * power(k, n - 1);
}
}
Passo 5
No programa principal, incluímos e
do usuário e exibimos o resultado da chamada
<stdio.h>
, lemos os valores de
power(k,n)
:#include <stdio.h>
int power(int k, int n) {
if (n == 0) {
return 1;
} else {
return k * power(k, n - 1);
}
}
int main() {
int k, n;
printf("Digite o valor de k (inteiro positivo): ");
scanf("%d", &k);
printf("Digite o valor de n (inteiro positivo): ");
scanf("%d", &n);
int resultado = power(k, n);
printf("%d^%d = %d\n", k, n, resultado);
return 0;
}
Resposta
#include <stdio.h>
int power(int k, int n) {
if (n == 0) {
return 1;
} else {
return k * power(k, n - 1);
}
}
int main() {
int k, n;
printf("Digite o valor de k (inteiro positivo): ");
scanf("%d", &k);
printf("Digite o valor de n (inteiro positivo): ");
scanf("%d", &n);
int resultado = power(k, n);
printf("%d^%d = %d\n", k, n, resultado);
return 0;
}