Arquivo
-
▼
2011
(124)
-
▼
outubro
(10)
- Pascal: Recursividade
- Microsoft prevê o futuro da tecnologia
- Já estava na hora de termos um regulamento que fav...
- Symbian Belle chega no dia 26 de outubro
- Programa capaz de preencher uma fila sequencial e ...
- Lista encadeada com uma função de busca que retorn...
- Algoritmo para repassar os elementos de uma fila, ...
- Exercício de pilha e fila em Pascal (Dev-Pascal)
- Morre Esteve Jobs
- Antivírus da Microsoft aponta vírus no Chrome
-
▼
outubro
(10)
Seguidores
Tecnologia do Blogger.
Notícias
Páginas
segunda-feira, 31 de outubro de 2011
21:00 | Postado por
Amauri |
Editar postagem
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
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
Marcadores:
Pascal
Assinar:
Postar comentários (Atom)
Seu Sistema Operacional é...
TEMAS
- Cursos (1)
- Downloads (5)
- Eventos (3)
- I (1)
- Interessante (11)
- Licenciatura (1)
- Pascal (17)
- Tutoriais (2)
- Update Now (6)
- Visualg (3)
0 comentários:
Postar um comentário
Fique a vontade para Comentar!!!