Exercício de Re-aquecimento - Recursão

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).

  1. Desenvolva algoritmos recursivos para os seguintes problemas e implemente-os (em Java, por exemplo):
    1. Multiplicação de dois números naturais, através de somas sucessivas (Ex.: 6 ∗ 4 = 4 + 4 + 4 + 4 + 4 + 4).
    2. Soma de dois números naturais, através de incrementos sucessivos (Ex.: 3 + 2 = + + (+ + + 1)).
    3. Cálculo de 1 + 1/2 + 1/3 + 1/4 + ... + 1/N.
    4. Inversão de uma string.
    5. Gerador da sequência dada por:
      • F(1) = 1
      • F(2) = 2
      • F(n) = 2 ∗ F(n − 1) + 3 ∗ F(n − 2).
    6. 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.
    7. A partir de um vetor de números inteiros, calcule a soma e o produto dos elementos do vetor.
    8. Verifique se uma palavra é palíndromo (Ex. aba, abcba, xyzzyx).
    9. 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.
    10. 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.