Fatorial em Pascal com Recursividade

Para variar a minha semana foi cheia e mesmo assim ainda consigui um tempinho para ajudar algumas pessoas.

Uma coisa muito comum é o uso do FATORIAL em Pascal.

O simples fatorial já tinha explicado aqui no blog em:

http://professorwellingtontelles.blogspot.com/2011/06/fatorial-em-pascal.html

Agora vou explicar o princípio da recursividade do Pascal.

Fatorial em Pascal Recursivo.jpg

O que é a recursividade?

É quando utilizamos um processo dentro do mesmo processo.

Vários alunos podem achar isso muito simples, mas temos que prestar atenção aos resultados:

  • O resultado de um número fatorial não tem casas decimais.
  • O limite de um número inteiro em Pascal vai de -32768 até 32767, ou seja, fatorial de 8 que dá 40320 já daria errado no programa.

Resolvendo o limite iremos ter um resultado com LONGINT que vai de -2147483648 a 2147483647.

O programa fica desse jeito:

 Program Fatorial_Recursivo;  
 Uses Crt;  
 var  
  i : Integer;  
 function FAT (L : Integer): LongInt;  
 begin  
  if (L=0) then fat := 1  
  else fat := L * fat (L-1);  
 end;  
 Begin  
  ClrScr;  
  for i := 1 to 10 do  
   WriteLn ('Fatorial de ',i:2,' = ',fat(i):10);  
  ReadLn;  
 End.  

8 comentários:

  1. há um erro na linha 5 por isso esse programa nao corre

    ResponderExcluir
  2. há um erro na linha 5 por isso esse programa nao corre

    ResponderExcluir
  3. na linha 5, no lugar de "LongInt" seria "Integer"

    ResponderExcluir
  4. Julio,

    Se colocar Integer vai dar erro com números maiores de 32768.

    ResponderExcluir
  5. Qual a versão do Pascal usada? PascalZim / Free Pascal / DevPascal

    Isso dá a diferença.

    ResponderExcluir
  6. Gostaria de saber como posso Informar um número para ser calculado o fatorial, e em seguida mostrar a tabela de como foi feito a fatoração....exemplo: 5! = 1.2.3.4.5 = 120... MOSTRAR ESTE PROCESSO...até chegar o 120, como faço? Obrigado!!!!

    ResponderExcluir
  7. Tenho como fazer sim, quando quiser envie um e-mail para mim.

    ResponderExcluir
  8. Boa Tarde
    Professor
    Como faço para aumentar os limites no programa FATORIAL ?
    Preciso calcular o fatorial até 100.
    O Pascal que eu uso é o DEVPASCAL.
    Desde já, agradeço a atenção.
    Robson.

    ResponderExcluir