3. Função e Procedimento
funcao <nome-de-função> [(<seqüência-de-
declarações-de-parâmetros>)]: <tipo-de-
dado>
// Seção de Declarações Internas
inicio
//precisa de um retorno
// Seção de Comandos
fimfuncao
4. Função e Procedimento
procedimento <nome-de-procedimento>
[(<seqüência-de-declarações-de-
parâmetros>)]
// Seção de Declarações Internas
inicio
// Seção de Comandos
fimprocedimento
5. O que é Recursão?
É um método de programação no qual uma
função pode chamar a si mesma. O termo é
usado de maneira mais geral para descrever
o processo de repetição de um objeto de
um jeito similar ao que já fora mostrado.
12. No VisualG como seria a Função?
funcao fat (n:Inteiro):Inteiro
var i, resultado : inteiro
inicio
resultado <- 1
para i de n ate 1 passo -1 faca
resultado <- resultado * i
fimpara
retorne resultado
fimfuncao
13. No VisualG: Fatorial Recursivo
funcao fat (n:Inteiro):Inteiro
inicio
se n=0 entao
retorne 1
senao
retorne n * fat (n-1)
fimse
fimfuncao
Inicio
escreva("Digite um número: ")
leia (numero)
escreval("O fatorial de ",
numero, " é ", fat(numero))
fimalgoritmo
15. Resposta sem Recursividade
var
n, cont, soma, i: inteiro
inicio
escreval("Informe um número inteiro:")
leia(n)
se n <= 0 entao
repita
senao
cont <- 0
soma <- 0
para i de 1 ate n faca
soma <- soma + cont
cont <- cont + 1
fimpara
fimse
escreval ("Soma:", soma)
16. Somatório Recursivo
funcao somatorio (n:Inteiro):Inteiro
inicio
se n=1 entao
retorne 1
senao
retorne n + somatorio (n-1)
fimse
fimfuncao
Inicio
escreva("Digite um número: ")
leia (numero)
escreval("O Somatório de ",
numero, " é ",
somatorio(numero))
fimalgoritmo
17. Algoritmos Recursivos x Iterativos
Todo algoritmo recursivo possui um
algoritmo iterativo;
QUASE...
18. Vantagens
Simplifica a solução de alguns
problemas
Recursividades são mais compactas
para alguns tipos de algoritmo, mais
legíveis e mais fáceis de ser
compreendidas e implementadas.
19. Desvantagens
Por usarem intensivamente a memória ou poder de
processamento, os algoritmos recursivos tendem a
ser mais lentos e a consumir mais memória que os
iterativos, porém pode valer a pena sacrificar a
eficiência em benefício da clareza.
Erros de implementação podem levar a estouro de
pilha. Isto é, caso não seja indicada uma condição
de parada, ou se esta condição nunca for satisfeita,
entre outros.