ForunsBB

Tecnologia Programação e SEO para Webmasters
Data/Hora: 21 mai 2012, 20:22

Os Horários são TMG




Criar Novo Tópico Responder a este Tópico  [ 7 mensagens ] 
Autor Mensagem
 Assunto da Mensagem: Factorial
MensagemEnviado: 23 abr 2007, 22:02 
Offline
Nível 0
Nível 0

Registado: 19 abr 2007, 15:39
Mensagens: 47
A função factorial é uma função bastante utilizada na matemática e também nas linguagens de programação para exemplificar as funções iterativas e recursivas.

Note-se que o factorial de um número se calcula da seguinte forma,

n! = n x (n-1) x (n-2) x ... x 1

Exemplo,

5! = 5x4x3x2x1 = 120


Uma função iterativa normalmente está associada a um ciclo, não deixa operações suspensas e vai acumulando um eventual resultado.

Uma função recursiva, invoca-se a si mesma para executar as instruções.


Em baixo deixarei um programa, na versão iterativa e recursiva, que pede o número para o qual se pretende saber o factorial e o imprime no ecran.

Versão Iterativa:

Código:
#include <stdio.h>

long fact_iterativo (int n)
{
     int i, res=1;
     
     for (i=0;i<n;i++)
     {
          res=res*(n-i);
     }
     
     return res;


int main ()
{
     int num;
     
     printf("Introduza o numero: ");
     scanf("%d", &num);
     
     printf("%lu\n", fact_iterativo(num));
     
     return 0;
}


Versão Recursiva:

Código:
#include <stdio.h>

long int fact_recursivo (int n)
{
     if (n>1)
     {
       return n*fact_recursivo(n-1);
      }
     else
     {
        return 1;
     }
}

int main ()
{
     int num;
     
     printf("Introduza o numero: ");
     scanf("%d", &num);
     
     printf("%lu\n", fact_recursivo(num));

     return 0;
}


Nota:

- Em C há N modos de estruturar o código, por exemplo, blocos com uma só instrução não necessitam dos delimitadores { e } mas eu tentarei sempre que possivel coloca-los porque na detecção de erros o uso de { } torna-se muito útil. Assim como apresentarei o código identado, com espaçamentos, etc...

_________________
Hoje seamaster, Amanhã uma lenda..


Editado pela última vez por seamaster em 23 abr 2007, 23:18, num total de 1 vez.

Topo
 Perfil  
 
 Assunto da Mensagem:
MensagemEnviado:  






Topo
   
 
 Assunto da Mensagem:
MensagemEnviado: 23 abr 2007, 22:58 
Offline
Nível 3
Nível 3
Avatar do Utilizador

Registado: 18 ago 2004, 16:11
Mensagens: 780
Localização: Algures no planeta Terra
tb tenho o vicio de colocar as {} sempre apesar de se dizer k nao se deve pois se nao sao necessarias so fazem o source maior (ha uma certa razao) mas eu n gosto de meter a { numa nova linha, acho feio(opinioes...) ah e reparei enquanto escrevia isto k na primeira main nao tens type falta-te o int

_________________
(\__/)
(0.o )
(> < )
Bunny is taking over the world, please help him.


Topo
 Perfil  
 
 Assunto da Mensagem:
MensagemEnviado: 23 abr 2007, 23:21 
Offline
Nível 0
Nível 0

Registado: 19 abr 2007, 15:39
Mensagens: 47
Nem reparei que faltava o int, muito por culpa de que o código sem ele também compila, visto que caso não esteja lá nada ele assume o int.

Quanto às {} é mesmo uma questão de gosto e de hábito, depende de cada um.

_________________
Hoje seamaster, Amanhã uma lenda..


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Factorial
MensagemEnviado: 24 abr 2007, 00:18 
Offline
Nível 0
Nível 0
Avatar do Utilizador

Registado: 21 fev 2006, 13:39
Mensagens: 84
seamaster Escreveu:
- Em C há N modos de estruturar o código, por exemplo, blocos com uma só instrução não necessitam dos delimitadores { e } mas eu tentarei sempre que possivel coloca-los porque na detecção de erros o uso de { } torna-se muito útil. Assim como apresentarei o código identado, com espaçamentos, etc...


Não é bem assim a historia dos blocos....

Numa função nunca podes tirar os blocos mesmo que seja um função de uma instrução e se não me engano no switch também n o pode fazer....

Só podes usar mesmo dentro do if e os loops .... :)


Topo
 Perfil  
 
 Assunto da Mensagem:
MensagemEnviado: 24 abr 2007, 12:51 
Offline
Nível 0
Nível 0

Registado: 19 abr 2007, 15:39
Mensagens: 47
dark_splinter, se calhar expressei-me mal, o que quis dizer foi que por exemplo um IF ou um FOR com uma só instrução não necessitam de { e } mas eu disse que mesmo nestes casos iria colocar as { } por uma questão de organização e para evitar alguns erros desnecessários.

[]

_________________
Hoje seamaster, Amanhã uma lenda..


Topo
 Perfil  
 
 Assunto da Mensagem:
MensagemEnviado: 27 abr 2007, 17:56 
Offline
Nível 0
Nível 0

Registado: 27 abr 2007, 16:34
Mensagens: 24
Em pequenos códigos não faz diferença, mas habituem-se sempre a user { }, pois às vezes teem só uma instrução, e depois mexem no código e colocam outra, depois começa a dar erros e já não sabem de onde é...

_________________
http://www.weblusa.org


Topo
 Perfil  
 
 Assunto da Mensagem:
MensagemEnviado: 27 abr 2007, 21:58 
Offline
Nível 0
Nível 0

Registado: 26 abr 2007, 12:47
Mensagens: 10
Eu utilizo sempre, até por uma questão de organização :) dá sempre jeito !!!


Topo
 Perfil  
 
Mostrar mensagens anteriores:  Ordenar por  
Criar Novo Tópico Responder a este Tópico  [ 7 mensagens ] 

Os Horários são TMG


Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante


Criar Tópicos: Proibído
Responder Tópicos: Proibído
Editar Mensagens: Proibído
Apagar Mensagens: Proibído
Enviar anexos: Proibído

Pesquisar por:
Ir para:  
Política de Privacidade | Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group