Faça uma função não-recursiva que receba um número inteiro positivo
e retorne o hiperfatorial desse número. O hiperfatorial de um número
, escrito
, é definido por:
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.
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
resultado = 1
for k in range(1, n+1):
resultado *= k**k
return resultado