Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
O fatorial quádruplo de um número N é dado por (2n)!/(n)! Faça uma função recursiva que receba um número inteiro positivo N e retorne o fatorial quádruplo desse número. #include <stdio.h> int fatorial(int n)
{
if(n>0) { return n*fatorial(n-1). } else { return 1. }
} int n, fat. printf("Digite n"). scanf("%d", &n). fat = fatorial(2*n) / fatorial(n). printf("Fatorial quadruplo de %d eh: %d", n, fat). } Na verdade deste jeito que eu fiz consigo obter o resultado correto e tudo, mas acho que segue um pouco a proposta do exercício. Há alguma forma de resolver que já tenha como retorno o resultado final do fatorial quádruplo?
Repare no seguinte:
(2n)! 2n (2n-1)(2n-2) ... n (n-1) (n-2) ... 1
------ = ----------------------------------------------------------- = 2n (2n-1) (2n-2) .... (n+1)
n! n (n-1) (n-2) ... 1
Com isso você já pode cortar várias multiplicações desnecessárias.
Mas você pode reescrever isso de outra forma (já que sabemos que o último número é n+1):
(n+1) (n+2) (n+3) (n+4) ... * (n+n-1) + (n+n)
Mesmo com o fatorial simples, você possui o produto de uma progressão aritmética de razão 1.
Pesquisando um pouco você encontra isso:
https://en.wikipedia.org/wiki/Arithmetic_progression#Product
http://mathworld.wolfram.com/RisingFactorial.html
Exemplo:
Calcular o fatorial quádruplo de n=8.
Fazendo na mão depois da simplificação mostrada anteriormente: 9 10 11 12 13 14 15 * 16 = 518918400
Usando a fórmula com a função gamma:
#include <math.h>
#include <stdio.h>
int main(void) {
http://en.cppreference.com/w/c/numeric/math/tgamma