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

Passo 1

O enunciado pede uma função recursiva que, dado um inteiro positivo N, calcule o superfatorial, definido por sf(N)=prodk=1^N k!. Para isso vamos usar recursão e a definição de fatorial.

Passo 2

Primeiro, lembramos a definição recursiva de fatorial. Definimos:
0! = 1
e para n>=1:
n! = n times (n-1)!
Essa definição nos dá a base e o passo recursivo.

Passo 3

Agora montamos a definição recursiva de superfatorial. Tomamos como caso base para N=1:
sf(1) = 1! = 1
E para N>1:
sf(N) = sf(N-1) times N!
Ou seja, cada chamada de sf(N) chama sf(N-1) e multiplica pelo fatorial de N.

Passo 4

Por fim, traduzimos isso em código (pseudocódigo/C) criando duas funções recursivas, uma para fatorial e outra para superfatorial:
// Função recursiva para fatorial
int fatorial(int n) {
if (n == 0) return 1;
return n * fatorial(n-1);
}
// Função recursiva para superfatorial
int superfatorial(int N) {
if (N == 1) return fatorial(1); // que é 1
return superfatorial(N-1) * fatorial(N);
}

Resposta

int fatorial(int n) {
if (n == 0) return 1;
return n * fatorial(n-1);
}
int superfatorial(int N) {
if (N == 1) return 1; // 1! = 1
return superfatorial(N-1) * fatorial(N);
}

Exercícios relacionados