AulaAplicação03 Matdisc
Texto
(2) 24/5/2010. Recursão Se você olhar em qualquer bom dicionário, verá alguma coisa como "recursão é o ato de recorrer". Mas recorrer é uma palavra de vários significados.... Recursão Para quem deseja aprender, no entanto, uma definição de recursão bem formal e completa: “É um processo recursivo é aquele em que objetos são definidos em termos de outros objetos do mesmo tipo. Usando alguma forma de relação de recorrência, toda a classe de objetos pode ser definida a partir de alguns valores iniciais e de um pequeno número de regras.” Embora seja boa, uma definição como esta tende a ser classificada como difícil e, em geral, não ajuda os alunos na hora de usar recursão.. 2.
(3) 24/5/2010. Recursão A recursão também está intimamente ligada à indução matemática e a matemática é a fonte de todo o formalismo necessário á i em computação. Costuma-se dizer que uma definição é recorrente, um algoritmo é recursivo e um raciocínio é indutivo.Em todos os casos, estamos enfatizado lados da mesma moeda. Recursão e indução matemática já foram definidos em nosso curso. curso. Algoritmos Recursivos A idéia de qualquer algoritmo recursivo é simples: Se a instância em que estamos interessados é pequena, resolva-o diretamente, como puder. Se a instância é grande, reduza-a a uma instância menor do mesmo problema, para então resolvê-la diretamente.. 3.
(4) 24/5/2010. Algoritmos Recursivos A recursão é uma das técnicas mais simples e úteis que existem para usarmos em nossos algoritmos. Consiste em um blocos de a bl d comandos d (denominados (d i d recursivos) i ) chamar h si mesmo, até que o retorno seja trivial. O uso da recursão na confecção de algoritmos, de forma consciente, indica um nível mais elevado do programador dentro do universo da programação.. Importância Técnicas recursivas são muito usadas em: 9 9 9 9 9 9. Funções (functions) Procedimentos (procedures) Ponteiros Pilhas Filas Listas e etc…. São muito importantes para as disciplinas de Linguagem de Programação e Estrutura de Dados.. 4.
(5) 24/5/2010. Como a recursão é tradada pelo computador? A recursão envolve guardar o estado atual do processamento de maneira que ele possa continuar de onde parou, quando terminada. d ela l estiver i i d Guardar o estado de um processamento consome tempo e memória, por isso a recursão é usualmente tida como menos eficiente que a iteração. Porém isto é discutível…. Recursão de Cauda A recursão de cauda é um tipo especial de recursão, no qual não existe processamento a ser feito depois de encerrada d a chamada h d recursiva. i Sendo S d assim, i não é necessário ái guardar o estado do processamento no momento da chamada recursiva. Desta forma é possível executar código recursivo de forma tão eficiente quanto é possível executar código iterativo.. 5.
(6) 24/5/2010. Exemplo 1: Elabore um algoritmo simples que leia 10 valores reais de entrada e retorne a soma de todos eles: a) Da forma iterativa, b) De forma recursiva.. Program Ex1_Usual; Uses Crt, Wincrt; Var v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, soma: real; Begin B i readln(v1); readln(v2); readln(v3); readln(v4); readln(v5); readln(v6); readln(v7); readln(v8); readln(v9); readln(v10); Soma:= v1+v2+v3+v4+v5+v6+v7+v8+v9+v10; Writeln(soma); end.. 6.
(7) 24/5/2010. Program Ex1_Recursivo; Uses Crt, Wincrt; Var valor, soma: real; i:i integer; i Begin soma := 0; for i:=1 to 10 do begin readln(valor); soma:= soma + valor; end; writeln(soma); end.. Exemplo 2: Fazer um programa que calcule N! (fatorial de N). O valor de N deve ser lido de entrada. Lembrando que: 1) N! = 1 * 2 * ...* (N-1) * N 2) 0! = 1, por definição.. 7.
(8) 24/5/2010. Program Ex2; Uses crt; Var n, fat, i : integer; Begin write('N = '); readln(n); fat := 1; for i:= 1 to n do begin fat := fat * i; end; writeln('Fatorial de ', n, ' = ', fat); readkey; End.. Decomposição do Fatorial Fatorial(3) = 3 * 2 = 6. Fatorial(3) = 3 * Fatorial(2). Fatorial(2) = 2 * Fatorial(1). Fatorial(2) = 2 * 1 = 2. Fatorial(1) = 1*Fatorial(0). Fatorial(1) = 1*1 = 1. Fatorial(0)=1. 8.
(9) 24/5/2010. Decomposição do Fatorial. Exemplo 3: Escrever um algoritmo em Pascal que escreve todos os números que não são múltiplos de 5 entre 10 e 50, e retorne a soma de d todos d eles. l. 9.
(10) 24/5/2010. Program Ex3; Uses crt; Var soma, i : integer; Begin soma:=0; for i := 10 to 50 do begin if (i mod 5 <> 0) then begin writeln(i); soma:= soma + i;i end; end; writeln('A soma eh: ', soma); End.. Exemplo 4: Escrever um algoritmo em Pascal que leia um número N do usuário, depois calcule e escreva quantos divisores ele possuii na tela. l. 10.
(11) 24/5/2010. program Ex4; uses crt; var x, i, cont: integer; begin write('Informe um numero: '); readln(x); cont:=0; for i:= 1 to x do begin if (x mod i = 0) then begin cont =cont + 1; cont:=cont 1 end; end; writeln('O numero ', x, ' possui ', cont, ' divisores.'); readkey; End.. Exercícios: Faça algoritmos recursivos que leiam 100 valores inteiros de entrada e retorne na tela: a) O maior deles, b) O produto deles, c) A média aritmética deles, d) A soma dos pares e a soma dos ímpares,. 11.
(12) 24/5/2010. Exercícios: A recursividade pode ser utilizada para gerar todas as possíveis permutações de um conjunto de símbolos. Por exemplo, seis de l existem i i permutações no conjunto j d símí bolos A, B e C: ABC, ACB, BAC, BCA, CBA e CAB. Faça um algoritmo que pergunte o número de símbolos a permutar, leia-os e gere todas as permutações possíveis.. 12.
(13)
Documentos relacionados
Vice- Presidente para Assuntos de Produtos e Metodologia: Rogério Ribeiro.. Vice- Presidente para Assuntos de Controle Social: Claudio
Há amplo espaço para preocupação quanto às dificuldades para aprovação de reformas necessárias à contenção do déficit público, peça crucial para o sucesso
Sem desconsiderar as dificuldades próprias do nosso alunado – muitas vezes geradas sim por um sistema de ensino ainda deficitário – e a necessidade de trabalho com aspectos textuais
Por outro lado, quando se fala em pequenas e médias empresas, onde o número de funcionários é maior, é mais bem dividida e o uso da Intranet se torna
Assédio ou violência moral no trabalho não é um fenômeno novo, nem localizado, tanto que é objeto de pesquisas da Organização Internacional do Trabalho (OIT), que já
Entre outras, podem ser citadas: a falta de apoio dos grandes partidos no Congresso Nacional; o crescente isolamento político que o presidente passou a sofrer muito em função
A raiva é uma doença viral que acomete os animais domésticos, silvestres e destes para o homem, causando uma doença com sintomatologia?. nervosa, aguda e fatal, levando ao óbito
quedar-se na expectativa para ver co mo se comporia o mercado, mas lambém o fato de que as exportações nos últimos tempos têm incluído consignações de fonte