·
Sistemas de Informação ·
Linguagens de Programação
Send your question to AI and receive an answer instantly
Recommended for you
42
Introdução aos Arrays Unidimensionais em Java
Linguagens de Programação
ESPM
20
Introdução aos Arrays Bidimensionais em Programação
Linguagens de Programação
ESPM
19
Introdução à Linguagem R - Histórico, Interfaces e Instalação
Linguagens de Programação
ESPM
8
Métodos de Manipulação de Strings - Exercícios de Programação em Java
Linguagens de Programação
ESPM
20
Introdução às Janelas Gráficas em Java com JOptionPane
Linguagens de Programação
ESPM
18
Exercícios Práticos em R Markdown: Análise de Dados e Visualização
Linguagens de Programação
ESPM
2
Base R Cheat Sheet
Linguagens de Programação
ESPM
37
Introdução à Codificação de Métodos em Java
Linguagens de Programação
ESPM
14
Atividade de Revisao - Criacao e Manipulacao de Dataframe com Tidyverse em R
Linguagens de Programação
ESPM
29
Tipos Abstratos de Dados e Tipos de Dados em Programação
Linguagens de Programação
ESPM
Preview text
Sistemas de Informação ESPM Laboratório de Programação Prof Dr Antonio Marcos SELMINI antonioselminiespmbr Recursividade Sistemas de Informação ESPM Recursão Sistemas de Informação ESPM Recursão Repetições podem ser obtidas escrevendose laços como laços for ou laços while Outra forma de se obter repetição é por meio da recursão que ocorre quando uma função método chama a si mesma A recursão oferece uma alternativa elegante e poderosa para executar tarefas repetitivas Recursão é um conceito que define um método que chama a si mesmo Quando isso ocorre denominase chamada recursiva Também se considera como recursivo um método M se ele chama outro método que chama M de volta Sistemas de Informação ESPM Recursão O maior benefício da abordagem recursiva no projeto de algoritmos é que nos permite tirar vantagem da estrutura repetitiva presente em muitos problemas Com a recursão podese evitar a análise de casos complexos e o uso de laços aninhados Essa abordagem pode levar a descrições de algoritmos mais legíveis e ainda manter a eficiência O uso da recursão é útil para definir objetos que tenham uma estrutura repetitiva similar como nos exemplos que seguem Sistemas de Informação ESPM Exemplos de recursão Exemplo 1 Sistemas operacionais modernos definem os diretórios do sistema de arquivos também conhecidos como pastas de uma forma recursiva Na verdade um sistema de arquivos consiste em um diretório de mais alto nível e o conteúdo deste diretório compreende arquivos e outros diretórios que podem por sua vez conter arquivos e diretórios e assim por diante Os diretórios base de um sistema de arquivos contêm apenas arquivos mas usando esta definição recursiva o sistema operacional permite que os diretórios sejam aninhados em qualquer profundidade enquanto houver espaço na memória Goodrich Michael T Tamassia Roberto Estruturas de Dados e Algoritmos em Java Página 145 Edição do Kindle Sistemas de Informação ESPM Exemplos de recursão Exemplo 2 Existem vários exemplos de recursão na arte e na natureza Um dos exemplos mais clássicos de recursão usado na arte são as bonecas russas Matryoshka Cada boneca é feita de madeira sólida ou oca contendo outra boneca Matryoshka dentro de si Goodrich Michael T Tamassia Roberto Estruturas de Dados e Algoritmos em Java Página 145 Edição do Kindle Sistemas de Informação ESPM Recursão Um exemplo típico de recursão é o cálculo do fatorial de um número Dado um número n inteiro e positivo o fatorial de n é dado por n 1 2 3 n1 n else f n n n f n 1 0 if 1 Sistemas de Informação ESPM Recursão public static int fatorialRecursivoint n método recursivo ifn 0 caso base return 1 else return n fatorialRecursivon1 caso recursivo public static int fatorialint n int fat 1 whilen 1 fat fat n n return fat versão não recursiva do cálculo do fatorial Sistemas de Informação ESPM Recursão fatorialRecursivo4 retorna 4 6 24 chamada fatorialRecursivo3 chamada retorna 3 2 6 fatorialRecursivo2 chamada retorna 2 1 2 fatorialRecursivo1 chamada retorna 1 1 1 fatorialRecursivo0 chamada retorna 1 Sistemas de Informação ESPM Recursão Soma dos elementos de um array de forma recursiva private static int somaVetorint v int n ifn 1 return v0 else return vn1somaVetorv n1 Sistemas de Informação ESPM Exercício 1 O que é retornado em cada uma das chamadas para os métodos abaixo public static int metodo1int x ifx 1 return x return 5 metodo1x 1 x a metodo11 b metodo13 public static int metodo2int n ifn 1 return 1 return n 1 metodo2n 1 a metodo22 b metodo23 c metodo20 Sistemas de Informação ESPM Exercício de programação 2 Escreva um método recursivo que calcule o valor de xn O valor de n deve ser maior ou igual a 0 3 Escreva um método recursivo que retorne a soma dos elementos de um array 4 Escreva um método recursivo que determine quantas vezes um dígito aparece em um número inteiro 5 Escreva um método recursivo que imprima no vídeo a correspondência em binário de um valor inteiro dado na base decimal 6 Escreva um método recursivo para calcular e retornar o nésimo termo da sequência de Fibonacci Sistemas de Informação ESPM Bibliografia CORNELL G HORSTMANN C A Y S Core Java Volume 1 Fundamentos 8ª ed Editora Pearson 2010 DEITEL H DEITEL P Java Como Programar 10ª ed Editora Pearson 2010 13 Sistemas de Informação ESPM Bibliografia COELHO A Java com orientação a objetos 1ª ed Editora LCM 2012 14
Send your question to AI and receive an answer instantly
Recommended for you
42
Introdução aos Arrays Unidimensionais em Java
Linguagens de Programação
ESPM
20
Introdução aos Arrays Bidimensionais em Programação
Linguagens de Programação
ESPM
19
Introdução à Linguagem R - Histórico, Interfaces e Instalação
Linguagens de Programação
ESPM
8
Métodos de Manipulação de Strings - Exercícios de Programação em Java
Linguagens de Programação
ESPM
20
Introdução às Janelas Gráficas em Java com JOptionPane
Linguagens de Programação
ESPM
18
Exercícios Práticos em R Markdown: Análise de Dados e Visualização
Linguagens de Programação
ESPM
2
Base R Cheat Sheet
Linguagens de Programação
ESPM
37
Introdução à Codificação de Métodos em Java
Linguagens de Programação
ESPM
14
Atividade de Revisao - Criacao e Manipulacao de Dataframe com Tidyverse em R
Linguagens de Programação
ESPM
29
Tipos Abstratos de Dados e Tipos de Dados em Programação
Linguagens de Programação
ESPM
Preview text
Sistemas de Informação ESPM Laboratório de Programação Prof Dr Antonio Marcos SELMINI antonioselminiespmbr Recursividade Sistemas de Informação ESPM Recursão Sistemas de Informação ESPM Recursão Repetições podem ser obtidas escrevendose laços como laços for ou laços while Outra forma de se obter repetição é por meio da recursão que ocorre quando uma função método chama a si mesma A recursão oferece uma alternativa elegante e poderosa para executar tarefas repetitivas Recursão é um conceito que define um método que chama a si mesmo Quando isso ocorre denominase chamada recursiva Também se considera como recursivo um método M se ele chama outro método que chama M de volta Sistemas de Informação ESPM Recursão O maior benefício da abordagem recursiva no projeto de algoritmos é que nos permite tirar vantagem da estrutura repetitiva presente em muitos problemas Com a recursão podese evitar a análise de casos complexos e o uso de laços aninhados Essa abordagem pode levar a descrições de algoritmos mais legíveis e ainda manter a eficiência O uso da recursão é útil para definir objetos que tenham uma estrutura repetitiva similar como nos exemplos que seguem Sistemas de Informação ESPM Exemplos de recursão Exemplo 1 Sistemas operacionais modernos definem os diretórios do sistema de arquivos também conhecidos como pastas de uma forma recursiva Na verdade um sistema de arquivos consiste em um diretório de mais alto nível e o conteúdo deste diretório compreende arquivos e outros diretórios que podem por sua vez conter arquivos e diretórios e assim por diante Os diretórios base de um sistema de arquivos contêm apenas arquivos mas usando esta definição recursiva o sistema operacional permite que os diretórios sejam aninhados em qualquer profundidade enquanto houver espaço na memória Goodrich Michael T Tamassia Roberto Estruturas de Dados e Algoritmos em Java Página 145 Edição do Kindle Sistemas de Informação ESPM Exemplos de recursão Exemplo 2 Existem vários exemplos de recursão na arte e na natureza Um dos exemplos mais clássicos de recursão usado na arte são as bonecas russas Matryoshka Cada boneca é feita de madeira sólida ou oca contendo outra boneca Matryoshka dentro de si Goodrich Michael T Tamassia Roberto Estruturas de Dados e Algoritmos em Java Página 145 Edição do Kindle Sistemas de Informação ESPM Recursão Um exemplo típico de recursão é o cálculo do fatorial de um número Dado um número n inteiro e positivo o fatorial de n é dado por n 1 2 3 n1 n else f n n n f n 1 0 if 1 Sistemas de Informação ESPM Recursão public static int fatorialRecursivoint n método recursivo ifn 0 caso base return 1 else return n fatorialRecursivon1 caso recursivo public static int fatorialint n int fat 1 whilen 1 fat fat n n return fat versão não recursiva do cálculo do fatorial Sistemas de Informação ESPM Recursão fatorialRecursivo4 retorna 4 6 24 chamada fatorialRecursivo3 chamada retorna 3 2 6 fatorialRecursivo2 chamada retorna 2 1 2 fatorialRecursivo1 chamada retorna 1 1 1 fatorialRecursivo0 chamada retorna 1 Sistemas de Informação ESPM Recursão Soma dos elementos de um array de forma recursiva private static int somaVetorint v int n ifn 1 return v0 else return vn1somaVetorv n1 Sistemas de Informação ESPM Exercício 1 O que é retornado em cada uma das chamadas para os métodos abaixo public static int metodo1int x ifx 1 return x return 5 metodo1x 1 x a metodo11 b metodo13 public static int metodo2int n ifn 1 return 1 return n 1 metodo2n 1 a metodo22 b metodo23 c metodo20 Sistemas de Informação ESPM Exercício de programação 2 Escreva um método recursivo que calcule o valor de xn O valor de n deve ser maior ou igual a 0 3 Escreva um método recursivo que retorne a soma dos elementos de um array 4 Escreva um método recursivo que determine quantas vezes um dígito aparece em um número inteiro 5 Escreva um método recursivo que imprima no vídeo a correspondência em binário de um valor inteiro dado na base decimal 6 Escreva um método recursivo para calcular e retornar o nésimo termo da sequência de Fibonacci Sistemas de Informação ESPM Bibliografia CORNELL G HORSTMANN C A Y S Core Java Volume 1 Fundamentos 8ª ed Editora Pearson 2010 DEITEL H DEITEL P Java Como Programar 10ª ed Editora Pearson 2010 13 Sistemas de Informação ESPM Bibliografia COELHO A Java com orientação a objetos 1ª ed Editora LCM 2012 14