Faça uma função não-recursiva que receba um número inteiro positivo impar N e retorne o fatorial duplo desse número. O fatorial duplo é definido como o produto de todos os números naturais ímpares de 1 até algum número natural ímpar N . Assim, o fatorial duplo de 5 é: 5 !! = 1 * 3 * 5 = 15

Passo 1

O enunciado pede uma função não-recursiva que receba um inteiro positivo ímpar N e calcule seu fatorial duplo, definido como o produto de todos os números ímpares de 1 até N. Para isso vamos usar laços de repetição e multiplicação de inteiros.

Passo 2

A ideia é usar um loop iterativo que comece em 1 e vá incrementando de 2 em 2 até N. A cada iteração, multiplicamos o valor atual de i por uma variável acumuladora. Dessa forma não dependemos de chamadas recursivas e mantemos o algoritmo simples e eficiente.

Passo 3

Em pseudocódigo, o algoritmo é:
res <- 1
para i de 1 até N com passo 2:
res <- res * i
retorna res

Passo 4

Em C, implementamos essa ideia criando uma função que recebe N, inicializa res em 1 e faz o for de i=1 até i<=N, i+=2, atualizando res a cada passo.

Passo 5

Para testar, usamos N=5: o loop faz res=11=1, depois res=13=3, depois res=3*5=15. Logo a função retorna 15, que é o fatorial duplo de 5.

Resposta

long long fatorialDuplo(int N) {
long long res = 1;
for (int i = 1; i <= N; i += 2) {
res *= i;
}
return res;
}

Exercícios relacionados