Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como implementar um programa para calcular o fatorial de um número?

0 votos
411 visitas
perguntada Mar 18, 2016 em Programação Computacional por danielcajueiro (5,376 pontos)  
Compartilhe

3 Respostas

0 votos
respondida Mar 18, 2016 por danielcajueiro (5,376 pontos)  

Você pode encontrar dois programas abaixo usando Python. Um usando iteração e o outro usando recursão.

def recursive_factorial(n):
    if(n>1):
        return n*recursive_factorial(n-1)
    else:
        return 1

def factorial(n):
    f=1
    for i in range(2,n+1):
        f=f*i
    return f    

if __name__ == '__main__':
    n=5
    print factorial(n)

    print recursive_factorial(n)
0 votos
respondida Abr 7, 2016 por danielcajueiro (5,376 pontos)  

Essas implementações em R foram feitas por um estudante (se não me engano foi o Carlos Cinelli em uma versão preliminar do curso de Métodos Computacionais em Economia da UNB) em R:

#### Fatorial ####
# recursivo
fatorial <- function(n){
  if(n==0) return(1)
  if(n==1) return(1)
  n*fatorial(n-1)
}

# for loop
fat2 <- function(n){
  f <- 1
  for (i in 1:n){
    f <- f*i
  }
  f
}

# testando
fatorial(10)
fat2(10)
factorial(10) # função nativa do R
0 votos
respondida Abr 7, 2016 por danielcajueiro (5,376 pontos)  

Algumas implementações em Java feitas em por Bruno Fort em uma versão do Curso de Métodos Computacionais da UnB:

/*************************************************************************
 * Calcula o fatorial de um número inteiro recursivamente na força bruta.
 *************************************************************************/

public static int factorial(int num) {
    if(num == 0) {
        return 1;
    }
    else {
        return num*factorial(num - 1);
    }
}

/**************************************************************************
 * Retorna o n-ésimo termo da sequência de Fibonacci eficientemente.
 **************************************************************************/

public static int fibonacci(int n, int first, int second) {
    if(n == 0) {
        return first;
    }
    else if(n == 1) {
        return second;
    }
    else {
        return fibonacci(n - 1, second, second + first);
    }
}
...