Crie um programa em C, que contenha uma função recursiva que receba dois inteiros positivos k e n e calcule \mathrm{k}^{\mathrm{n}}. 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 k e n e calcule, de forma recursiva e usando apenas multiplicações, o valor de
k^n.
O conteúdo envolvido aqui é recursão e o uso da propriedade
k^n = k \times k^{n-1}
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:
k^0 = 1.
Logo, se n = 0, voltamos imediatamente o valor 1, sem fazer mais chamadas recursivas.

Passo 3

Para n>0, usamos a relação recursiva
k^n = k \times k^{n-1}.
Ou seja, nossa função recursiva recebe (k,n) e devolve
k \times \text{power}(k,\,n-1).

Passo 4

Agora implementamos a função recursiva em C. Ela testa se n é 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 <stdio.h>, lemos os valores de k e n do usuário e exibimos o resultado da chamada 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;
}

Exercícios relacionados