Buscar

Recursividade

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

RECURSIVIDADE!
 
 
O procedimento "faz" escreve o valor de N quando esse é igual a zero ou escreve o valor de N-1 quando N for maior que zero.
O procedimento "faz" é recursivo. Conforme o valor de N que for passado como parâmetro, ele chama a si próprio diversas vezes, sendo que, a cada chamada, é reduzido o valor de N. Quando N chega a zero, escreve o valor e começa a retornar das chamadas recursivas.
 
Considere a implementação e o funcionamento de subprogramas (rotinas) recursivos. Analise as afirmativas a seguir e assinale a falsa.
E. 
Subprogramas recursivos não precisam ter condição de parada.
Todo subprograma recursivo precisa ter uma condição de parada, pois ficará autochamando-se infinitamente até ocorrer stack overflow.
 
Analise as alternativas a seguir e selecione a que implementa corretamente um subprograma recursivo que calcula o somatório dos números inteiros no intervalo [1,N].
C. 
funcao Y(X :inteiro): inteiro
inicio
 se X = 1 entao
 retorne (1)
 senao
 retorne(X + Y(X-1))
 fimse
fimfuncao
A função Y recebe um valor inteiro; quando esse valor é 1, ela retorna 1, se não, ela retorna o valor de X + Y(X-1), calculando recursivamente o somatório.
4. 
Analise o seguinte subprograma em pseudocódigo:
funcao M(X :inteiro): inteiro
inicio
 se (X = 0) ou (X = 1) entao
 retorne (1)
 senao
 retorne(M(X-1)+M(X-2))
 fimse
fimfuncao
As alternativas a seguir apresentam chamadas da função M e indicam o retorno conforme o valor passado como parâmetro. Selecione a alternativa correta.
A. 
​​​​​​​M(5) retornará o valor 8.
M(7) = M(6) + M(5) = 21
M(6) = M(5) + M(4) = 13
M(5) = M(4) + M(3) = 8
M(4) = M(3) + M(2) = 5
M(3) = M(2) + M(1) = 3
M(2) = M(1) + M(0) = 2
M(1) = 1
M(0) = 1
Resposta correta.
C. 
Série = (1/1) + (2/1) + (3/2) + (4/3) + (5/4) + (6/5) + (7/6) + (8/7) + (9/8) + (10/9).
Essa alternativa representa a série calculada pela função calcula quando o conteúdo da variável valor for 10.
Desafio
A recursividade é um processo utilizado para definir a própria solução, sendo chamado recursivamente na especificação de sua execução.
Seu desafio é construir um algoritmo em pseudocódigo que leia um vetor de 10 elementos, sendo cada elemento do tipo real, e que escreva todos os elementos do vetor. Para realizar essas tarefas, utilize dois procedimentos não recursivos (ler e escrever). O algoritmo também deve ter uma função recursiva que calcule o somatório dos elementos do vetor; assim, o somatório pode ser definido da seguinte maneira:
Somatorio(X)
se X = 1, o somatorio é o primeiro elemento do vetor (vetor[1])
se X > 1, o somatório é o elemento atual (vetor[X]) + Somatorio(X-1)
O algoritmo abaixo demonstra a implementação do desafio.
algoritmo "VetorRecursivo"
var
valor : vetor[1..10] de real
procedimento ler
var
K : inteiro
inicio
para K de 1 ate 10 passo 1 faca
escreva("Digite elemento[",K,"]: ")
leia(valor[K])
fimpara
fimprocedimento
procedimento escrever
var
K : inteiro
inicio
para K de 1 ate 10 passo 1 faca
escreva("elemento[",K,"]: ",valor[K])
fimpara
fimprocedimento
funcao somatorio(X : inteiro):real
inicio
se (X = 1) entao
retorne(valor[1])
senao
retorne(valor[X]+somatorio(X-1))
fimse
fimfuncao
inicio
ler()
escrever()
escreval("Somatorio: ",somatorio(10))
fimalgoritmo

Continue navegando