Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Recursividade
Apresentação
Nesta Unidade de Aprendizagem, trabalharemos com recursividade através da construção de 
subalgoritmos recursivos. 
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Identificar as características de funções recursivas.•
Reconhecer problemas que podem ser resolvidos através de soluções recursivas.•
Construir algoritmos que utilizem recursividade.•
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)
Infográfico
Em programação, a recursividade é um mecanismo útil e poderoso que permite a uma função 
chamar a si mesma. Veja no infográfico conceitos e exemplos sobre recursividade
Aponte a câmera para o 
código e acesse o link do 
conteúdo ou clique no 
código para acessar.
https://statics-marketplace.plataforma.grupoa.education/sagah/1558c0a0-f473-4d33-bc7a-6d65797e770b/38baa2ea-361f-46fa-ae96-1f40b241d5a7.jpg
 
Conteúdo do livro
A recursividade é uma forma de construir funções que apresentam chamadas a elas mesmas 
recursivamente. Conheça um pouco mais sobre esse assunto estudando as páginas selecionadas do 
seguinte livro: EDELWEISS, N.; LIVI, M.A.C. Algoritmos e programação com exemplos em Pascal e 
C - Vol. 23. Série Livros Didáticos Informática UFRGS. Porto Alegre: Bookman, 2014. Boa leitura!
Conteúdo interativo disponível na plataforma de ensino!
Dica do professor
Assistindo ao vídeo preparado para esta Unidade, compreenderemos como funcionam os 
subprogramas recursivos!
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/cda5469a45a4c9c356ffc6135057e199
Exercícios
1) 
Considere o seguinte algoritmo em pseudocódigo e selecione a alternativa falsa. 
 
algoritmo "oquefaz" 
var 
 valor : inteiro 
procedimento faz(N : inteiro) 
inicio 
 se (N=0) entao 
 escreval(N) 
 senao 
 faz(N-1) 
 escreval(N) 
 fimse 
fimprocedimento 
 
inicio 
 repita 
 escreva("Digite: ") 
 leia(valor) 
 ate valor >= 0 
 faz(valor) 
fimalgoritmo
A) O procedimento "faz" é recursivo.
B) O procedimento "faz" possui uma condição de parada da recursividade.
C) O algoritmo escreve os números inteiros entre 0 (zero) e o valor lido.
D) 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.
E) Se o valor digitado for menor que zero, o programa solicitará que seja digitado um novo valor.
2) 
Considere a implementação e o funcionamento de subprogramas (rotinas) recursivos. 
Analise as afirmativas a seguir e assinale a falsa.
A) Subprogramas recursivos possuem chamadas a si mesmos.
B) A execução do subprograma fica em espera (em suspenso) até que retorne da chamada 
recursiva.
C) Cada chamada recursiva exige o armazenamento de nova posição de retorna e criação de 
novas variáveis locais.
D) Rotinas recursivas correm o risco de gerar stack overflow.
E) Subprogramas recursivos não precisam ter condição de parada.
3) 
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].
A) funcao Y(X :inteiro): inteiro 
inicio 
 se X = 0 entao 
 retorne (1) 
senao 
 retorne(X + Y(X-1)) 
fimse 
fimfuncao
B) funcao Y(X :inteiro): inteiro 
inicio 
 se X = 1 entao 
 retorne (1) 
 senao 
 retorne(X - Y(X-1)) 
 fimse 
fimfuncao
C) funcao Y(X :inteiro): inteiro 
inicio 
 se X = 1 entao 
 retorne (1) 
 senao 
 retorne(X + Y(X-1)) 
 fimse 
fimfuncao
funcao Y(X :inteiro): inteiro 
var 
D) 
 K, L : inteiro 
inicio 
 K <- 0 
 para L de 1 ate X passo 1 faca 
 K <- K + L 
 fimpara 
 retorne(K) 
fimfuncao
E) funcao Y(X :inteiro): inteiro 
var 
 K, L : inteiro 
inicio 
 K <- 0 
 para L de 1 ate X passo 1 faca 
 K <- K - L 
 fimpara 
 retorne(K) 
fimfuncao
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.
B) M(6) retornará o valor 20.
C) M(1) retornará o valor 0.
D) M(3) retornará o valor 2.
E) M(7) retornará o valor 13.
5) 
Analise o seguinte algoritmo em pseudocódigo: 
 
algoritmo "oquefaz" 
var 
valor : inteiro 
funcao calcula(N : inteiro):real 
inicio 
 se (N = 0) entao 
 retorne(1) 
 senao 
 retorne((N / (N-1)) + calcula(N-1)) 
 fimse 
fimfuncao 
 
inicio 
 escreva("Digite Valor: ") 
 leia(valor) 
 escreval("Serie= ",serie(valor)) 
fimalgoritmo 
 
Considere que foi digitado 10 para a variável valor. Selecione a alternativa que representa 
corretamente a série implementada pela função calcula(valor).
A) Série = (1/1) + (1/2) + (2/3) + (3/4) + (4/5) + (5/6) + (6/7) + (7/8) + (8/9) + (9/10).
B) Série = 1 + (1/1) + (2/1) + (3/2) + (4/3) + (5/4) + (6/5) + (7/6) + (8/7) + (9/8).
C) Série = (1/1) + (2/1) + (3/2) + (4/3) + (5/4) + (6/5) + (7/6) + (8/7) + (9/8) + (10/9).
D) Série = (1/1) - (1/2) + (2/3) - (3/4) + (4/5) - (5/6) + (6/7) - (7/8) + (8/9) - (9/10).
E) Série = (1/1) - (2/1) + (3/2) - (4/3) + (5/4) - (6/5) + (7/6) - (8/7) + (9/8) - (10/9).
Na prática
José trabalha como estagiário em uma fábrica de software, em meio de suas atribuições ele se 
deparou com uma dúvida referente a recursividade em um dos projetos que lhe foi dado, a dúvida 
dele foi:
"Uso recursão ou iteração (ouvi dizer que se pode fazer das duas formas) para resolver um dado 
problema algorítmico?"
Sendo assim, procurou seu líder de equipe, que lhe explicou:
"José, acho que quase todos que desenvolvem programas usam métodos iterativos para a criação 
de programas, vejo que você está ligado e foi ótimo a sua curiosidade. Vou dar uma nova 
ferramenta para modificar um pouco seu código e explicar as diferenças."
Primeiro de tudo, o que é um método iterativo e o que é um método recursivo?
Vejamos duas funções que fazem exatamente a mesma coisa, o produto fatorial de um número, 
entretanto uma usa um processo iterativo e a outra um processo recursivo.
//método iterativo 
int fatorial(int x){ 
 int i,result; 
 result=1; 
 for (i=0; i < x; i++){ //uso do comando for 
 result= result*(x-i); 
 } 
 return result; 
}
 
//método recursivo 
int fat(int x) 
{ 
if (x < 2) return 1; //recursivo uso de uma condição para o fim 
 else return fat(x-1) * x; 
} 
 
int main(int argc, char *argv[]) { 
//chamadas dos métodos 
printf("Fatorial com iteração.: %d",fatorial(4)); 
printf("nFatorial com recursão.: %d",fat(4)); 
return 0; 
}
Note que no método iterativo é criado um loop (for), já o recursivo a função é chamada dentro de si 
mesma com uma condição de parada.
O uso da linguagem C é para exemplificar, isso ajuda os programadores que querem aprender, mas 
o importante é fazer outros experimentos para ver se realmente entendeu.
Saiba +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor:
Recursividade 
Neste vídeo, o autor dá uma aula sobre recursividade 
utilizando slides e dando exemplos.
Aponte a câmera para o código e acesse o linkdo conteúdo ou clique no código para acessar.
Me Salva! Programação em C - PLC20 - Recursão 
No vídeo a seguir, a autora mostra como exemplo o fatorial de 
um número.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
Curso de Programação em C/C++ - Aula 14 - Recursividade 
Neste vídeo, o autor mostra, como exemplo, a impressão de 
números sequênciais de início e limite de um número.
Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar.
https://www.youtube.com/embed/eaUlBChA7nY?rel=0
https://www.youtube.com/embed/kS_VJYWeqIQ?rel=0
https://www.youtube.com/embed/dkBh0TrGXtg?rel=0

Mais conteúdos dessa disciplina