-->

Seguidores

Tecnologia do Blogger.
Cursos Online na Área de Informática
Siga-nos
Twitter Facebook RSS
segunda-feira, 31 de outubro de 2011
program teste;

uses crt;

var
ft:integer;

function fat(n:integer):real;
begin
if(n = 0)then
begin
fat:=1;
end
else
begin
fat:=n*fat(n-1);
end;
end;

begin
clrscr;
write('Digite a fatorial:'); read(ft); writeln;
if(ft < 0)then
begin
writeln('Numero invalido!');
end
else
begin
writeln('Fatorial de ',ft,' = ',fat(ft):1:0);
end;
readkey;
end.



Vamos a explicação.

function fat(n:integer):real;
begin
if(n = 0)
then fat:=1;
else fat:=n*fat(n-1);
end

Fat(5)
5*Fat(4)
4*Fat(3)
3*Fat(2)
2*Fat(1)
1*Fat(0) - iteração não necessária, poderia-se alterar a condição do If para n=1, pois fat(0) e fat(1) tem o mesmo valor.

Observe que na primeira iteração, estou mandando o 5 para a variável N DA função fat, no IF a função verifica que N não é igual a zero, portanto vai para o ELSE, fazendo o seguinte 5*Fat(4) (n*fat(n-1)), isso se repete até o fim, quando a condição do IF for verdadeira, os valores serão devolvidos ao local que foram chamados, começando de baixo para cima

Fat(5) = 120.
5*Fat(4) = 5*24 = 120, envia 120 para a linha de cima
4*Fat(3) = 4*6 = 24, envia 24 para a linha de cima
3*Fat(2) = 3*2 = 6, envia 6 para a linha de cima
2*Fat(1) = 2*1 = 2, envia 2 para a linha de cima
1*Fat(0) = 1, envia 1 para a linha de cima
Gostou? Compartilhe!

0 comentários:

Seu Sistema Operacional é...

TEMAS

Visualizações