Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Recursividade em Java, Notas de estudo de Metodologias de Desenvolvimento de Software

Uma função que é dita recursiva é aquela que invoca ela mesma. Já explicamos, e demos exemplos, que é possível, recomendável e normal que uma função invoque outra

Tipologia: Notas de estudo

2019

Compartilhado em 03/09/2019

nubio-freitas
nubio-freitas 🇧🇷

8 documentos

1 / 4

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Recursividade
Introdução:
Uma função que é dita recursiva é aquela que invoca ela mesma. Já explicamos, e demos
exemplos, que é possível, recomendável e normal que uma função invoque outra.
Porém também é possível que uma função chame ela mesma, mas é preciso um cuidado
especial para não cairmos em um looping infinito.
A melhor forma de ilustrar isso é calculando o fatorial de um número. O fatorial de um
número n é representado por n!. Exemplo:
5! é igual a 5 . 4! . 3! . 2! . 1! que é igual a 120
4! é igual a 4 . 3! . 2! . 1! que é igual a 24,
3! é igual a 3 . 2! . 1! que é igual a 6
2! é igual a 2 . 1! que é igual a 2.
Por definição tanto 0!, quanto 1! são iguais a 1.
Podemos formular uma fórmula geral:
n! = n * (n - 1)!
Ampliando ela, devemos parar somente quando o último elemento do produto for 1:
n! = n * (n-1)! = n * (n-1)! * (n-2)! = n * (n-1)! * (n-2)! * ... * 1
Para programar isso, criamos uma função fatorial(int n) que retorna 1 se for passado 1
como argumento (pois fatorial(1) = 1) e caso o argumento seja maior que 1:
fatorial(n) = n * fatorial(n-1)
Assim como na maioria de nossos problemas, a ideia de recursividade é resolvida com
um simples teste condicional IF ELSE. Exemplo:
Função inteiro fatorial (inteiro: n)
Início
Se n=0 então
retorne(1)
Senão
retorne(n*fatorial(n-1))
Fim se
Fim
pf3
pf4

Pré-visualização parcial do texto

Baixe Recursividade em Java e outras Notas de estudo em PDF para Metodologias de Desenvolvimento de Software, somente na Docsity!

Recursividade

Introdução:

Uma função que é dita recursiva é aquela que invoca ela mesma. Já explicamos, e demos exemplos, que é possível, recomendável e normal que uma função invoque outra.

Porém também é possível que uma função chame ela mesma, mas é preciso um cuidado especial para não cairmos em um looping infinito.

A melhor forma de ilustrar isso é calculando o fatorial de um número. O fatorial de um número n é representado por “ n! ”. Exemplo:

 5! é igual a 5. 4!. 3!. 2!. 1! que é igual a 120  4! é igual a 4. 3!. 2!. 1! que é igual a 24,  3! é igual a 3. 2!. 1! que é igual a 6  2! é igual a 2. 1! que é igual a 2.  Por definição tanto 0!, quanto 1! são iguais a 1. Podemos formular uma fórmula geral: n! = n * (n - 1)! Ampliando ela, devemos parar somente quando o último elemento do produto for 1: n! = n * (n-1)! = n * (n-1)! * (n-2)! = n * (n-1)! * (n-2)! * ... * 1 Para programar isso, criamos uma função fatorial(int n) que retorna 1 se for passado 1 como argumento (pois fatorial(1) = 1) e caso o argumento seja maior que 1:

fatorial(n) = n * fatorial(n-1) Assim como na maioria de nossos problemas, a ideia de recursividade é resolvida com um simples teste condicional IF ELSE. Exemplo:

Função inteiro f atorial (inteiro: n)

Início

Se n=0 então

retorne(1)

Senão

retorne(n* fatorial(n-1) )

Fim se

Fim

Teste:

E na linguagem C?

Podemos resolver o problema do fatorial utilizando uma função iterativa. Exemplo:

Função inteiro Fatorial (inteiro: n)

inteiro : i;

Início

result ← 1;

para i de 2 até n repita

result ← result * i;

Fim para

Retorne(result)

Exercícios:

  1. Faça uma função recursiva que faça a soma de todos os números compreendidos entre 0 e um número qualquer informado pelo usuário:

Entrada: 5 5+4+3+2+1+ Saida: 15

  1. Faça uma função recursiva para calcular a potência: Número: 2 Potência: 3 Saída: 8
  2. Escreva uma função recursiva que produza o inverso de uma palavra: Palavra: marcos Saída: socram