Processamento da Informação Teoria. Recursividade
|
|
|
- Vinícius Pereira Oliveira
- 8 Há anos
- Visualizações:
Transcrição
1 Processamento da Informação Teoria Recursividade Semana 08 Prof. Jesús P. Mena-Chalco 15/06/2013
2 Uma função chama outra função Vimos exemplos de uma função chamar uma outra função. def fatorial1(n): mult = 1 for p in range(1,n+1): mult = mult*p return mult A função fatoria1 chama a função range.
3 Uma função chama outra função Também é válido uma função chamar a si mesma.
4 Recursividade Recursividade é uma das coisas mágicas e interessantes em Programação.
5 Recursividade Anuncio de cacao com uma imagem recursiva.
6 Recursividade def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1)
7 Recursividade contagem_regressiva(3) def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1)
8 Recursividade contagem_regressiva(3) def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1) print 3 contagem_regressiva(2)
9 Recursividade contagem_regressiva(3) def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1) print 3 contagem_regressiva(2) print 2 contagem_regressiva(1)
10 Recursividade contagem_regressiva(3) def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1) print 3 contagem_regressiva(2) print 2 contagem_regressiva(1) print 1 contagem_regressiva(0)
11 Recursividade contagem_regressiva(3) def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1) print 3 contagem_regressiva(2) print 2 contagem_regressiva(1) print 1 contagem_regressiva(0) print Fogo!
12 Recursividade contagem_regressiva(3) def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1) print 3 contagem_regressiva(2) print 2 contagem_regressiva(1) print 1 contagem_regressiva(0) print Fogo! O processo de uma função chamando a si mesma é chamado de Recursividade, e tais funções são ditas recursivas.
13 Recursividade x Iteração Porque não usar Iteração ao invés de Recursividade? Depende muito do estilo de programação. Entretanto, algumas vezes é mais apropriado usar Recursividade para resolver um problema. def contagem_regressiva(n): if n==0: print "Fogo!" print n contagem_regressiva(n-1) def contagem_regressiva2(n): while n>0: print n n = n-1 print "Fogo!"
14 Fibonacci (iterativo) Crie uma função que permita imprimir o n-éssimo número da sequência de Fibonacci. Considere apenas um laço 'while'. Cabeçalho: def fibonacci(n):
15 Fibonacci (iterativo) def fibonacci(n): k = 1 t1 = 0 t2 = 1 while k<n: seguinte = t1+t2 t1 = t2 t2 = seguinte k = k+1 print t2
16 Fibonacci
17 Fibonacci
18 Fibonacci (recursivo) def fib(n): if n==0: return 0 elif n==1: return 1 return fib(n-1)+fib(n-2)
19 def fib(n): if n==0: return 0 elif n==1: return 1 return fib(n-1)+fib(n-2)
20 1 def fib(n): if n==0: return 0 elif n==1: return 1 return fib(n-1)+fib(n-2)
21 def fib(n): if n==0: return 0 elif n==1: return 1 return fib(n-1)+fib(n-2) 2 1
22 def fib(n): if n==0: return 0 elif n==1: return 1 return fib(n-1)+fib(n-2) 2 1 1
23 def fib(n): if n==0: return 0 elif n==1: return 1 return fib(n-1)+fib(n-2)
24 def fib(n): if n==0: return 0 elif n==1: return 1 return fib(n-1)+fib(n-2)
25 Fatorial (iterativo) def fatorial(n): f = 1 while n>1: f = f*n n = n-1 return f
26 Fatorial (recursivo) Crie uma função recursiva que permita calcular o fatorial de um número inteiro dado como parâmetro. Cabeçalho: def fact(n):
27 Fatorial (iterativo) def fact(n): if n==0: return 1 return n*fatorial(n-1)
28 Fatorial (iterativo) def fact(n): if n==0: return 1 return n*fact(n-1)
29 Somatória (recursivo) Crie uma função recursiva que permita somar todos os números naturais no intervalo 1 até n (dado como entrada). Cabeçalho: def somatoria(n):
30 Somatória (recursivo) def somatoria(n): if n==1: return 1 return n+somatoria(n-1)
31 Atividade em aula Questão 1: 2 pontos Questão 2: 2 pontos Questão 3: 3 pontos Questão 4: 3 pontos
32 Atividade em aula Questão 1: Indique o que faz a seguinte função: def recursiva(): print 'recursiva' Recursiva() Resposta: Recursividade infinita. A função para quando a profundidade máxima da recursividade é alcançada. StackOverflowError
33 Atividade em aula Questão 2: Crie uma função recursiva para calcular n elevado a x ( ) def potencia(n,x): if x==1: return n return n*potencia(n,x-1)
34 Atividade em aula Questão 3: Indique o resultado apresentará a execução da seguinte função. Considere como parâmetros de entrada: frase='ufabc'. O que faz a função? def funcaor(frase): if len(frase)==1: return frase return funcaor(frase[1:])+frase[0] 'ufabc' 'cbafu' Retorna a frase (uma string) de trás para frente.
35 Atividade em aula Questão 4: Indique o que realiza a seguinte função? Teste com número1=13, número2=2. def funcaoc(numero1, numero2): if numero1<numero2: print numero1 funcaoc(numero1/numero2, numero2) print numero1%numero Converte o numero1, da base 10, para a base numero2.
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula 08 Recursão (conceito, utilização, exemplos) Prof. Leinylson Fontinele Pereira Na aula anterior... Alocação Dinâmica de Memória Introdução 3 O que vamos aprender? Recursividade
Aula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. João Henrique Kleinschmidt Material elaborado pelo prof. Jesús P. Mena-Chalco 3Q-20108 Recursão: Se você ainda não entendeu; Ver: "Recursão".
Aula 05: - Recursão (parte 1)
MCTA028 Programação Estruturada Aula 05: - Recursão (parte 1) Prof. Jesús P. Mena-Chalco [email protected] 3Q-20107 1 Recursão: Se você ainda não entendeu; Ver: "Recursão". Efeito Droste Anuncio
Recursividade. Prof. Jesus José de Oliveira Neto
Recursividade Prof. Jesus José de Oliveira Neto Algoritmos podem ser definidos de duas formas: Forma iterativa ou não recursiva: utiliza laços de repetição (while, for, do/while) Forma recursiva: métodos
Processamento da Informação Teoria. Exercícios sobre strings
Processamento da Informação Teoria Exercícios sobre strings Semana 04 Prof. Jesús P. Mena-Chalco 18/05/2013 Uma string é uma sequência Uma string (cadeia) é uma sequência de caracteres. Podemos acessar
Processamento da Informação Teoria. Strings
Processamento da Informação Teoria Strings Semana 04 Prof. Jesús P. Mena-Chalco 15/05/2013 Das aulas anteriores... Vimos vários tipos de dados: int, float, long, string Stings são qualitativamente diferentes
Introdução à Programação / Programação I
Introdução à Programação / Programação I Aula 18: Definições recursivas Rita P. Ribeiro 2017/2018 Departamento de Ciência de Computadores Nesta aula 1. Definições recursivas 2. Exemplos INTRODUÇÃO À PROGRAMAÇÃO
BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade
BC1424 Algoritmos e Estruturas de Dados I Aula 03: Recursão / Recursividade Prof. Jesús P. Mena-Chalco 1Q-2016 1 Sobre a Lista 01 2 Lista 01 Solve me first Simple Array Sum A Very Big Sum Diagonal Difference
Recursividade. Estrutura de Dados. Prof. Kleber Rezende
Recursividade Estrutura de Dados Prof. Kleber Rezende Considerações Iniciais Em aulas anteriores fizemos uma função que permite calcular o fatorial de um número. Naquela função, a cada nova iteração o
1. Para cada pergunta selecione uma opção. Resposta correta +2, incorreta -1. [12 pontos]
* Universidade Federal do ABC Avaliação: Prova 01 (40 pontos) Disciplina: MCTA028 - Programação Estruturada Turma: Noturno A1 e A2 Professor: Jesús P. Mena-Chalco Data: 25/10/2016 Nome completo: RA: Instruções:
Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição
Recursividade Prof. Cesar Augusto Tacla Métodos iterativos Métodos iterativos utilizam estruturas de repetição For While Do while Normalmente, um método invoca outros métodos, não a si mesmo. 2 1 Recursividade
Programação Estruturada
Programação Estruturada Recursão Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Recursão Recursão 1 Recursão 2
Relações de recorrência
Relações de recorrência Sequências. Relações de recorrência. Equação caraterística. Relações de recorrência de 2ª ordem não homogéneas. Referência: Capítulo: 4 Discrete Mathematics with Graph Theory Edgar
Processamento da Informação Teoria Funções
Processamento da Informação Teoria Funções Semana 01 Prof. Jesús P. Mena-Chalco 27/04/2013 Funções No contexto de linguagens de programação, uma função é uma sequência de instruções utilizada para realizar
Técnicas de análise de algoritmos
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Técnicas de análise de algoritmos Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]
Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma
ALGORITMOS AVANÇADOS UNIDADE II Recursividade. Luiz Leão
Luiz Leão [email protected] http://www.luizleao.com Conteúdo Programático 2.1 - Definições recursivas 2.2 - Como implementar recursividade 2.3 - Quando não usar recursividade 2.4 - Desenvolvendo algoritmos
Algoritmos e Programação. AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO
1 Algoritmos e Programação AULA 21: Recursividade UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO TECNOLÓGICO CIÊNCIA DA COMPUTAÇÃO 2 Recursividade A recursão é o processo pelo qual passa um
Processamento da Informação Teoria. Matrizes
Processamento da Informação Teoria Matrizes Semana 07 Prof. Jesús P. Mena-Chalco 08/06/2013 Matrizes >>> M = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] >>> M[1] Seleção de uma linha [4, 5, 6] >>> M[1][1] Seleção
Roteiro Prático Nº 13 Recursividade
UNIVERSIDADE FEDERAL DE ITAJUBÁ UNIFEI CAMPUS ITABIRA BAC004 TÉCNICAS DE PROGRAMAÇÃO Professores: Claudia, Denílson, Fabiana, Fernando, Juliano, Natália, Raquel, Rodrigo, Sandro e Walter Roteiro Prático
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Recursividade
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Recursividade Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si mesmo
Algoritmos e Estruturas de Dados I
Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin ([email protected]) Aula 10 (Baseada nos slides do Prof. André Balan) Recursão Recursão Da wikipedia: A recursão é o processo pelo qual
04 Recursão SCC201/501 - Introdução à Ciência de Computação II
04 Recursão SCC201/501 - Introdução à Ciência de Computação II Prof. Moacir Ponti Jr. www.icmc.usp.br/~moacir Instituto de Ciências Matemáticas e de Computação USP 2010/2 Moacir Ponti Jr. (ICMCUSP) 04Recursão
Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10
Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10 Estrutura de Repetição while Estrutura que permite a repetição de um conjunto de comandos. Até o momento vimos o while: while
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 04 Programa Recursivo e Máquinas Prof.ª Danielle Casillo Funções recursivas Alguma função é recursiva quando
Relações de recorrência
Relações de recorrência Sequências. Relações de recorrência. Equação caraterística. Relações de recorrência de ª ordem não homogéneas. Referência: Capítulo: 4 Discrete Mathematics with Graph Theory Edgar
Recursividade. Objetivos do módulo. O que é recursividade
Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade
Análise de Algoritmos Parte 4
Análise de Algoritmos Parte 4 Túlio Toffolo [email protected] www.toffolo.com.br BCC202 Aula 07 Algoritmos e Estruturas de Dados I Como escolher o algoritmo mais adequado para uma situação? (continuação)
Recursividade Alguns problemas são definidos com base nos mesmos, ou seja, podem ser descritos por instâncias do próprio problema.
Recursividade Alguns problemas são definidos com base nos mesmos, ou seja, podem ser descritos por instâncias do próprio problema. Para tratar estas classes de problemas, utilizase o conceito de recursividade.
Revisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira [email protected] Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
Recursividade. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Recursividade David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Conceito de Recursividade Fundamental em Matemática e Ciência da Computação Um programa recursivo é um programa que chama a si
Fundamentos da Programação
Fundamentos da Programação Solução da Repescagem do Primeiro Teste 31 de Janeiro de 2013 09:00 10:30 1. De um modo sucinto, (a) (0.5) Diga o que é um processo computacional. Um processo computacional é
MC102 Algoritmos e Programação de Computadores
MC102 Algoritmos e Programação de Computadores Instituto de Computação UNICAMP Primeiro Semestre de 2014 Roteiro 1 Maior número 2 Soma de n números 3 Fatorial 4 Máximo Divisor Comum (MDC) 5 Números primos
Processamento da Informação Teoria. Desvio Condicional
Processamento da Informação Teoria Desvio Condicional Semana 03 Prof. Jesús P. Mena-Chalco 08/05/2013 Operador módulo O operador módulo trabalha com inteiros e produz o resto quando o primeiro operando
MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016
MC102 Aula 26 Recursão Instituto de Computação Unicamp 17 de Novembro de 2016 Roteiro 1 Recursão Indução 2 Recursão 3 Fatorial 4 O que acontece na memória 5 Recursão Iteração 6 Soma em um Vetor 7 Números
SCC0124 Introdução à Programação para Engenharias
SCC0124 Introdução à Programação para Engenharias 1. Escreva uma função ehpar(n) que recebe um número inteiro n e retorna se ele é par ou ímpar. Observação: a função não deve imprimir nada na tela, apenas
AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa
AULA 2: INTRODUÇÃO A PYTHON Luís Feliphe Silva Costa Sumário Variáveis simples Entrada e Saída de dados Operadores Estruturas Condicionais Estruturas de repetição Funções Tratamento de erros Variáveis
MAC2166 Introdução à Computação
MAC2166 Introdução à Computação Escola Politécnica Primeiro Semestre de 2015 Prova 3 Departamento de Ciência da Computação IME USP QUESTÃO 1 Nesta questão considere expressões na forma posfixa como no
Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Subprogramas Subprograma: programa que auxilia o programa principal na realização de uma determinada
Recursividade. Recursividade
A recursão é uma técnica que define um problema em termos de uma ou mais versões menores deste mesmo problema. Esta ferramenta pode ser utilizada sempre que for possível expressar a solução de um problema
BC-0005 Bases Computacionais da Ciência Aula 07 Lógica de Programação: Estruturas de repetição
1 BC-0005 Bases Computacionais da Ciência Aula 07 Lógica de Programação: Estruturas de repetição Prof. Rodrigo Hausen (com base nos slides do prof. Jesús P. Mena-Chalco) 2 Laços (estruturas de repetição)
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Principais paradigmas do projeto de algoritmos - Recursividade - Tentativa e erro - Divisão e Conquista - Programação dinâmica - Algoritmos Gulosos e de Aproximação
Algoritmos e Estruturas de Dados I. Recursividade. Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I Recursividade Pedro O.S. Vaz de Melo Problema Implemente uma função que classifique os elementos de um vetor em ordem crescente usando o algoritmo quicksort: 1. Seja
Aula 06: Análise matemática de algoritmos recursivos
Aula 06: Análise matemática de algoritmos recursivos David Déharbe Programa de Pós-graduação em Sistemas e Computação Universidade Federal do Rio Grande do Norte Centro de Ciências Exatas e da Terra Departamento
Fundamentos da Programação
Fundamentos da Programação Solução do Exame 13 de Janeiro de 2017 09:00 11:00 1. Indique se cada uma das seguintes afirmações é verdadeira ou falsa. No caso de ser falsa, justifique de forma sucinta. (a)
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
FUNDAMENTOS DA PROGRAMAÇÃO 2º Teste, 1 de junho de 2013, 1h30m
FUNDAMENTOS DA PROGRAMAÇÃO 2º Teste, 1 de junho de 2013, 1h30m 1. (3.25) Escreva um programa que pede o nome (mais de 2 caracteres) e o sobrenome (mais de 4 caracteres) a um utilizador e gera um username
1. Se v é um vetor, qual a diferença conceitual entre as expressões v[70] e v+70? [2 ponto]
Universidade Federal do ABC Avaliação: Prova 01 Disciplina: BC1424 - Algoritmos e Estruturas de Dados I Turma: Noturno Professor: Jesús P. Mena-Chalco Data: 15/03/2016 Nome completo: RA: Instruções para
Python: Recursão. Claudio Esperança
Python: Recursão Claudio Esperança Recursão É um princípio muito poderoso para construção de algoritmos A solução de um problema é dividido em Casos simples: São aqueles que podem ser resolvidos trivialmente
Lógica de Programação I
Gilson de Souza Carvalho [email protected] 1 Comando Do/While Além do comando while, existem outras estruturas para implementar laços repetitivos. O comando Do/While funciona de forma similar ao
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição
Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição 1 Comando while Deseja-se calcular o valor de: 1 + 2 + 3 +... + N. Observação: não sabemos, a priori, quantos termos
Introdução à Programação 2006/07. Algoritmos
Introdução à Programação 2006/07 Algoritmos Cálculo da média de uma sequência Algoritmos: Exercício 1 Pretende-se escrever um programa que, dado um numero indeterminado de números introduzidos pelo teclado,
