Você está na página 1de 24

Aula 06

Função e recursão

João L. F. Lacerda
(81)997495691
Método

❏ Estrutura que agrupa um grupo de comandos


com um objetivo específico
❏ Até aqui usamos apenas o método(main)
❏ podemos definir outros métodos que o
main pode chamar
Método
Recursão

❏ Capacidade de um procedimento, método ou função de


ser definido em termos de (ou "chamar" a) si próprio
❏ Muitos algoritmos são inerentemente recursivos e só
com dificuldade podem ser programados de forma
iterativa
Em java

❏ Métodos podem ser recursivos


❏ Recursão é útil para implementar definições indutivas, em
geral
❏ Exemplo: fatorial, fibonacci, ordenação, etc.

❏ É útil para manipular estruturas de dados recursivas


❏ Exemplo: listas ligadas, pilhas, árvores, etc
Exemplo: Série de Fibonacci
Exercício 1

❏ Defina um método recursivo que computa o


produto de dois números inteiros arbitrários
usando o operador de soma (não pode usar * nem
while ou for)
Exercício 1

❏ Defina um método recursivo que computa o


produto de dois números inteiros arbitrários
usando o operador de soma (não pode usar * nem
while ou for)
Iteração e recursão

❏ Iteração é um caso particular de recursão


❏ O comando

pode ser implementado por um método recursivo


m_rec da seguinte forma:
Escopo de variáveis

❏ Região do programa na qual a variável pode ser


referenciada
❏ Variáveis definidas dentro de métodos tem escopo local,
limitado aquele método, e não são vistas em outros
trechos da classe
❏ É possivel declarar variáveis com o mesmo nome em
métodos diferentes
Escopo de variáveis
Escopo de variaveis
Escopo de variaveis

❏ Variaveis declaradas em um loop ou bloco podem


apenas ser acessadas no loop ou bloco
Exercício 2

❏ Defina uma função fatorial (não pode usar * nem


while ou for)
Exercício 2

❏ Defina uma função fatorial (não pode usar * nem


while ou for)
Exercício 3
Circuito Pinguim
Exercício 3
Circuito Pinguim
Club Penguin é um jogo em que pinguins vivem em sociedade, se
aventuram, fazem amizades e participam de jogos e eventos. Você
começou a jogar e possui apenas 10 moedas, mas descobre que está
acontecendo um evento de circuito de jogos que premia com muitas
moedas enquanto participa dele. Durante o evento, você terá 2 minutos
para participar de vários jogos e cada um deles lhe concederá moedas,
ao fim do tempo o evento será finalizado imediatamente.Os jogos
sempre retornarão uma quantidade inteira de moedas.Os jogos serão
os seguintes:
Exercício 3
Circuito Pinguim
Surfe na Caçamba:Nesse jogo, a quantidade de moedas a serem recebidas vai ser a média entre o
tempo já decorrido em segundos e a quantidade de moedas atual.

Duração: 20 segundos

Pescaria no Gelo:Se a quantidade atual de moedas for par, será: (moedas_totais % 7)*6.Caso seja
ímpar, deverá ser realizada a operação: (moedas_totais % 7)**2

Duração: 30 segundos

Concurso de Dança:No concurso de dança, será adicionado 1 a quantidade de moedas até que essa
quantidade seja um múltiplo de 10. Se a quantidade inicial já for um múltiplo de 10, você ganhará 5
moedas.

Duração: 15 segundos

Aquagrabber:Já no Aquagrabber, a quantidade de moedas recebidas será a soma de cada unidade das
moedas pertencentes, por exemplo: se a quantidade de moedas for 23, vai ser 2 + 3 = 5.

Duração: 50 segundos

ATENÇÃO : É obrigatório o uso de funções nessa questão.


Exercício 3
Circuito Pinguim
Input: Os inputs serão uma quantidade indeterminada de strings que representarão qual jogo você vai participar, que podem
ser:

Surfe

Pescaria

Danca

Aqua

Essas strings representam, respectivamente, os jogos "Surfe na Caçamba", "Pescaria no Gelo", "Concurso de Dança" e
"Aquagrabber".

A entrada termina quando o tempo total de jogos chegar ou ultrapassar 2 minutos.

Output: A cada vez que você participar de um jogo, deve ser imprimido:

"O pinguim acabou de concluir o jogo (nome_do_jogo) e agora possui (moedas_totais) moedas."

Ao fim do circuito com a finalização do tempo total, deve-se pular uma linha e ser imprimido:

"Parabens! Você terminou o Circuito Pinguim, participando de (quantidade_de_jogos) jogos e acumulando a quantia de
(moedas_totais) moedas."
Exercício 3
Circuito Pinguim
Examplo

Input

Surfe

Pescaria

Surfe

Aqua

Output

O pinguim acabou de concluir o jogo Surfe na Caçamba e agora possui 15 moedas.

O pinguim acabou de concluir o jogo Pescaria no Gelo e agora possui 16 moedas.

O pinguim acabou de concluir o jogo Surfe na Caçamba e agora possui 49 moedas.

O pinguim acabou de concluir o jogo Aquagrabber e agora possui 62 moedas.

Parabens! Você terminou o Circuito Pinguim, participando de 4 jogos e acumulando a quantia de 62 moedas.
Exercício 4
A equação de Gandalf
Gandalf estava a passear pelas terras de Lothlórien,
quando encontra uns escritos élficos estranhos. Dentre
estes escritos, estava uma equação valiosíssima, capaz
de transformar a quantidade de guerreiros, por meio de
uma recursão.
Exercício 4
A equação funciona da seguinte forma: É passado um número N
qualquer. A função retorna um número com 8 dígitos ou mais,
onde cada par de dígitos é composto por o número de repetições
do número seguido do número. Em que a ordem dos pares se dá
do menor par para o maior par, esse processo é repetido até que o
número possua 8 dígitos ou mais
Por exemplo: O número 64466, seria transformado em 2436, pois
existem 2 números 4, e 3 números 6. Além disso, o par 24 é menor
que o par 36, por isso essa transformação fica 2436 e não 3624.
Se dois dígitos aparecem uma quantidade igual de vezes, a
ordenação é feita com base no valor do dígito, ainda em ordem
crescente
Exercício 4
Outro exemplo: O número é 10

Fazemos a operação em 10 e chegamos a 1011 #Note que o par 10 vem depois do par 11
por conta do critério de desempate

1011 não tem 8 dígitos ou mais

Fazemos a operação em 1011 e chegamos a 1031

1031 não tem 8 dígitos ou mais

Fazemos a operação em 1031 e chegamos a 101321

101321 não tem 8 dígitos ou mais

Fazemos a operação em 101321 e chegamos a 10121331 #Note que 13 vem depois de 12


que vem depois de 10 por conta do critério de desempate

10121331 tem 8 dígitos ou mais

Nossa resposta é 10121331 Nota: é obrigatório o uso de recursão nessa questão


Exercício 4
Input: Um número N inteiro, tal que 0 <= N <= 999999
Output :O número da entrada transformado.
Exemplos : Caso: 1
Input 10
Output 10121331
Caso: 2
Input 4321
Output 11121314

Você também pode gostar