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 é
Passo 1
O enunciado pede uma função recursiva que, dado um inteiro positivo
, calcule o superfatorial, definido por
. Para isso vamos usar recursão e a definição de fatorial.
Passo 2
Primeiro, lembramos a definição recursiva de fatorial. Definimos:
e para
:
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
:
E para
:
Ou seja, cada chamada de
chama
e multiplica pelo fatorial de
.
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 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);
}
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);
}
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);
}
if (N == 1) return 1; // 1! = 1
return superfatorial(N-1) * fatorial(N);
}