Ir ao conteúdo

Posts recomendados

Postado

Estou com dúvida no seguinte exercício, vocês podem me ajudar? 

 

O superfatorial de um número N é definida pelo produto dos N primeiros fatoriais de N. Assim, o superfatorial de 4 é sf(4) = 1! * 2! * 3! * 4! = 288. Faça uma função recursiva que receba um número inteiro positivo N e retorne o superfatorial desse número.

 

Essa foi a função que eu fiz mas está retornando o valor errado:

int superfatorial(int num){
	
	int res, super=1;
	
	if(num==0)
	return 1;
	
	else{
		while(num >= 0){
			res = superfatorial(num-1)*num;
		    super = super * res;
			num--;	
	    }
	}
	return super;
}

 

Postado

Opa!

Acho que fica mais fácil usar a definição iterativa do fatorial , e deixar a recursão somente para o superfatorial. Existem implementações melhores mas usando duas funções ou mais de um parâmetro.

 

int superfatorial(int n) {
int fat = 1;
int i;

 if(n==0) 
 return 1;

 else 
 {   
    for (i = 1; i <= n; i++) 
    {
       fat = fat * i;
    }

 }

return fat * superfatorial(n-1);

}

 

Abraço!

 

  

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...