Vamos fazer alguns exercícios de programação, para re-lembrar algortimos recursivos. Além disto, é uma oportunidade para utilizarmos nosso ambiente de trabalho (Git-Github-Github classroom).
- Desenvolva algoritmos recursivos para os seguintes problemas e implemente-os (em Java, por exemplo):
- Multiplicação de dois números naturais, através de somas sucessivas (Ex.: 6 ∗ 4 = 4 + 4 + 4 + 4 + 4 + 4).
- Soma de dois números naturais, através de incrementos sucessivos (Ex.: 3 + 2 = + + (+ + + 1)).
- Cálculo de 1 + 1/2 + 1/3 + 1/4 + ... + 1/N.
- Inversão de uma string.
- Gerador da sequência dada por:
- F(1) = 1
- F(2) = 2
- F(n) = 2 ∗ F(n − 1) + 3 ∗ F(n − 2).
- Gerador de Sequência de Ackerman:
- A(m, n) = n + 1, se m = 0
- A(m, n) = A(m − 1, 1), se m != 0 e n = 0
- A(m, n) = A(m − 1, A(m, n − 1)), se m != 0 e n != 0.
- A partir de um vetor de números inteiros, calcule a soma e o produto dos elementos do vetor.
- Verifique se uma palavra é palíndromo (Ex. aba, abcba, xyzzyx).
- Dado um número n, gere todas as possíveis combinações com as n primeiras letras do alfabeto. Ex.: n = 3. Resposta: ABC, ACB, BAC, BCA, CAB, CBA.
- Defina uma sequência de Fibonacci generalizada, de f0 a f1 como sequência
fibg(f0, f1, 0), fibg(f0, f1, 1), fibg(f0, f1, 2), ..., onde:
- fibg(f0, f1, 0) = f0
- fibg(f0, f1, 1) = f1
- fibg(f0, f1, n) = fibg(f0, f1, n − 1) + fibg(f0, f1, n − 2), se n > 1.