Faça uma função não-recursiva que receba um número inteiro positivo n e retorne o hiperfatorial desse número. O hiperfatorial de um número n, escrito H(n), é definido por:
H(n)=prodk=1^n k^k=1^1 cdot 2^2 cdot 3^3 ldots(n-1)^n-1 cdot n^n

Passo 1

O enunciado pede uma função não-recursiva para calcular o hiperfatorial de um inteiro positivo n, definido por H(n)=∏_{k=1}^{n} k^{k}. Vamos usar conceitos de laços de repetição (loops) e operação de exponenciação.

Passo 2

Pela definição H(n)=1{1}·2{2}·3{3}·…·n{n}, percebemos que podemos calcular H(n) iterativamente: basta manter um acumulador que vai multiplicando os termos k^{k} para k de 1 até n.
Começamos a função inicializando o resultado em 1. Em seguida, usamos um loop for que percorre k de 1 até n. A cada iteração, calculamos k^{k} e multiplicamos no acumulador.

Passo 3

Para a exponenciação k^{k} podemos usar a operação pow(k, k) (ou k**k em linguagens que aceitam). Dessa forma, o algoritmo não precisa de recursão e fica simples e direto.

Passo 4

Ao final do loop, o acumulador conterá exatamente H(n), que então retornamos como resultado da função.

Resposta

def hiperfatorial(n):
resultado = 1
for k in range(1, n+1):
resultado *= k**k
return resultado

Exercícios relacionados