Exercícios

  1. Implemente de forma recursiva uma função que recebe como entrada um número natural \(n\) e retorna a soma de todos os naturais até \(n\), isto é, retorna \(S_n = \sum_{i=0}^n i = 0 + 1 + 2 + \ldots + n\).

  2. Implemente uma função que recebe como entrada um número natural \(n\) e retorna o \(n\)-ésimo termo da série \(S_n = \sum_{i=0}^n \frac{1}{i!}\). Teste a função implementada para diferentes valores de \(n\) e veja se quando \(n\) cresce \(S_n\) se aproxima de \(e=2.718282...\)

  3. Considere a seguinte série: \(S_n = \sum_{i=0}^n 4\frac{(-1)^i}{2i + 1}\). Essa séria foi desenvolvida por Leibniz em 1682 e é conhecida para calcular aproximações para o número irracional \(\pi\), uma vez que \(S_n \xrightarrow[n \to \infty]{} \pi\).

    1. No caderno escreva um pseudo-código recursivo para o algoritmo que recebe como entrada um número natural \(n\) e retorna \(S_n\) de acordo com a fórmula acima.
    2. Agora no computador implemente o pseudocódigo elaborado acima.
    3. Teste a função implementada para diferentes valores de \(n\) e veja se quando \(n\) cresce \(S_n\) se aproxima de \(\pi = 3.141593...\)
  4. No caderno escreva um pseudo-código recursivo para o algoritmo que recebe como entrada um número natural \(n\) e retorna a soma dos \(n\) primeiros termos da sequência de Fibonacci. Considere que você sabe encontrar a o termo \(n\) da sequência de Fibonacci.Em seguida, no computador, implemente o pseudocódigo elaborado. Use a função que retorna o \(n\)-ésimo termos da sequência de Fibonacci implementada na semana passada.

  5. Seja \(\{x_i\}\) a sequência definida por \(x_i = \frac{1}{3^i}\). Defina \(S_n = \sum_{i=0}^n x_i\).

    1. No caderno escreva um pseudo-código recursivo para o algoritmo que recebe como entrada um número natural \(n\) e retorna \(S_n\).
    2. Agora no computador implemente o pseudocódigo elaborado acima.
    3. Para \(a \le b\) e \(a,b \in \mathbb{N}\) defina \(Soma(a,b) = x_a + x_{a+1} + \ldots + x_b\). Implemente no computador uma função que recebe como entrada \(a\) e \(b\) e retorna \(Soma(a,b)\) de forma recursiva, sem chamar a função implementada no item b. Dica: O caso base acontece quando \(a=b\), nesse caso qual deve ser a saída de \(Soma(a,b)\)? E se \(a<b\), como será a chamada recursiva?
  6. A generalização do exercício sobre investimento da semana passada.

    1. Seja \(I\) o valor investido em uma aplicação de rentabilidade \(j\%\) ao ano. Implemente uma função que recebe como entrada \(I\), \(j\) e \(n\) e retorna o total acumulado nessa aplicação após \(n\) anos.
    2. Use a função implementada para descobrir quanto de dinheiro teríamos a mais se investíssemos R$ 1.000,00 durante 2 anos em um fundo que rendesse \(10\%\) ao ano em vez de \(7,5\%\).
  7. A generalização do exercício sobre financiamento da semana passada.

    1. Seja \(V\) o valor financiado a juros compostos de \(j\%\) ao mês. Considere \(K\) o valor das parcelas fixas que serão pagas todo mês. Implemente uma função recursiva que recebe como entrada \(V\), \(j\), \(K\) e \(n\) e retorna a dívida existente após \(n\) meses desde o início do financiamento.
    2. Use a função implementada acima para comparar o valor da sua dívida de R$ 1.200,00 após 10 meses nos seguintes casos: parcela mensal de R$ 150,00 e parcela mensal de R$ 120,00. Considere os mesmos \(2\%\) de juros compostos ao mês.
  8. Mais um exercício de matemática fincanceira. Agora estamos interessados na quantidade de meses para se pagar a dívida. Suponha que você vai fazer um financiamento de \(V\) reais e vai pagar juros compostos de \(j\%\) ao mês. Considere que você pode pagar \(K\) reais por mês.

    1. No caderno escreva um pseudo-código recursivo para o algoritmo que recebe como entrada \(V\), \(j\) e \(K\) e retorna o número de meses que você vai demorar para pagar a sua dívida. Dica: A simplificação na chamada recursiva ocorre na entrada \(V\).
    2. Agora no computador implemente o pseudocódigo elaborado acima.
    3. Use a função implementada acima para comparar o número de meses até a quitação da dívida de R$ 1.200,00 nos seguintes casos: parcela mensal de R$ 120,00; parcela mensal de R$ 150,00 e parcela mensal de R$ 200,00. Considere os mesmos \(2\%\) de juros compostos ao mês.
  9. Implemente de forma recursiva uma função que recebe como entrada dois números inteiros e retorna o maior divisor comum entre eles. Usando a função acima encontre o maior divisor comum entre os seguintes pares de números: 125 e 325, 2829 e 861, 299 e 217.

  10. (Questão Desafio) Implemente uma função recursiva que recebe como entrada um array de dados e retorna todos as permutações possíveis com ele. A saída pode ser uma matriz, cujas linhas guardam as permutações, ou uma lista. Quando for testar sua função entre com arrays pequenos, de tamanho não muito maior que 10, caso contrário vai demorar muito para rodar. Lembre-se que para um conjunto com \(n\) elementos temos \(n!\) permutações.