C++ ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercício Resolvido de C++ - Um método recursivo que calcula o número de Fibonacci para um dado índiceQuantidade de visualizações: 877 vezes |
|
Pergunta/Tarefa: Observe a série de números Fibonacci abaixo: Série: 0 1 1 2 3 5 8 13 21 34 55 89 Índice: 0 1 2 3 4 5 6 7 8 9 10 11 Este algoritmo consiste em, dado um determinado índice, retornar o número de Fibonacci correspondente. Recursivamente, o cálculo pode ser feito da seguinte forma: fib(0) = 0; fib(1) = 1; fib(indice) = fib(indice - 2) + fib(indice - 1); sendo o indice >= 2 Os casos nos quais os índices são 0 ou 1 são os casos bases (aqueles que indicam que a recursividade deve parar). Seu método deverá possuir a seguinte assinatura:
int fibonacci(int indice){
// sua implementação aqui
}
Informe o índice: 6 O número de Fibonacci no índice informado é: 8 Veja a resolução comentada deste exercício usando C++:
#include <string>
#include <iostream>
using namespace std;
// assinatura da função recursiva
int fibonacci(int indice);
int main(int argc, char *argv[]){
// variáveis usadas na resolução do problema
int indice;
// vamos solicitar o índice do número de Fibonacci
cout << "Informe o índice: ";
// lê o índice
cin >> indice;
// calcula o número de Fibonacci no índice informado
cout << "O número de Fibonacci no índice informado é: " <<
fibonacci(indice) << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
// função recursiva que o número de Fibonacci em um determinado índice
int fibonacci(int indice){
if(indice == 0){ // caso base; interrompe a recursividade
return 0;
}
else if(indice == 1){ // caso base; interrompe a recursividade
return 1;
}
else{ // efetua uma nova chamada recursiva
return fibonacci(indice - 1) + fibonacci(indice - 2);
}
}
|
Java ::: Dicas & Truques ::: Timers |
Java Swing Exemplo completo: Como usar um timer para atualizar a hora atual em uma JLabelQuantidade de visualizações: 17461 vezes |
|
Este exemplo mostra como criar uma janela JFrame contendo dois botões JButton, um label JLabel e um timer (java.awt.Timer). Quando o timer dispara, o texto da label é atualizado para refletir a hora atual. Veja o resultado na imagem abaixo: ![]() E aqui está o código Java Swing completo para o exemplo:
package arquivodecodigos;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Calendar;
import java.text.DecimalFormat;
public class Estudos extends JFrame{
JLabel hora;
Timer timer;
DecimalFormat formato;
public Estudos() {
super("Usando timers em Java");
Container c = getContentPane();
c.setLayout(new FlowLayout(FlowLayout.LEFT));
formato = new DecimalFormat("00");
// Cria o timer
timer = new Timer(1000, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
atualizarHoras();
}
});
// Cria um botão com o texto "Iniciar"
JButton iniciar = new JButton("Iniciar");
iniciar.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
timer.start(); // inicia o timer
}
}
);
// Cria um botão com o texto "Parar"
JButton parar = new JButton("Parar");
parar.addActionListener(
new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
timer.stop(); // pára o timer
}
}
);
// JLabel que exibirá a hora atual
hora = new JLabel("00:00:00");
// Adiciona os botões à janela
c.add(iniciar);
c.add(parar);
// adiciona o label à janela
c.add(hora);
setSize(350, 250);
setVisible(true);
}
private void atualizarHoras(){
// Cria uma instância de Calendar
Calendar agora = Calendar.getInstance();
// horas, minutos e segundos
int horas = agora.get(Calendar.HOUR);
int minutos = agora.get(Calendar.MINUTE);
int segundos = agora.get(Calendar.SECOND);
hora.setText(formato.format(horas) + ":" +
formato.format(minutos) + ":" +
formato.format(segundos));
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
|
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como testar se uma string começa com uma determinada substring em JavaScript usando a função startsWith()Quantidade de visualizações: 2397 vezes |
|
O método startsWith() da linguagem JavaScript foi adicionado ao objeto String na revisão ECMAScript 2015, ou ES6, também chamado de ECMAScript 6. Este método é chamado diretamente em uma variável do tipo string e retorna true se a palavra, frase ou texto começar com uma substring específica e false em caso contrário. Veja um exemplo no qual verificamos se uma frase começa com a palavra "JavaScript":
<script type="text/javascript">
var frase = "JavaScript é uma das melhores linguagens";
if(frase.startsWith("JavaScript")){
document.writeln("A frase começa com a palavra JavaScript");
}
else{
document.writeln("A frase não começa com a palavra JavaScript");
}
</script>
Ao executarmos este código JavaScript nós teremos o seguinte resultado: A frase começa com a palavra JavaScript É importante ter em mente que a função startsWith() diferente letras maiúsculas de letras minúsculas. |
C ::: C para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a norma ou módulo de vetores nos espaços R2 e R3 usando C - Geometria Analítica e Álgebra Linear usando CQuantidade de visualizações: 4652 vezes |
|
Em Geometria Analítica e Álgebra Linear, a magnitude, norma, comprimento, tamanho ou módulo (também chamado de intensidade na Física) de um vetor é o seu comprimento, que pode ser calculado por meio da distância de seu ponto final a partir da origem, no nosso caso (0,0). Considere o seguinte vetor no plano, ou seja, no espaço bidimensional, ou R2: \[\vec{v} = \left(7, 6\right)\] Aqui este vetor se inicia na origem (0, 0) e vai até as coordenadas (x = 7) e (y = 6). Veja sua plotagem no plano 2D: ![]() Note que na imagem já temos todas as informações que precisamos, ou seja, o tamanho desse vetor é 9 (arredondado) e ele faz um ângulo de 41º (graus) com o eixo x positivo. Em linguagem mais adequada da trigonometria, podemos dizer que a medida do cateto oposto é 6, a medida do cateto adjacente é 7 e a medida da hipotenusa (que já calculei para você) é 9. Note que já mostrei também o ângulo theta (__$\theta__$) entre a hipotenusa e o cateto adjacente, o que nos dá a inclinação da reta representada pelos pontos (0, 0) e (7, 6). Relembrando nossas aulas de trigonometria nos tempos do colegial, temos que o quadrado da hipotenusa é a soma dos quadrados dos catetos, ou seja, o Teorema de Pitágoras: \[a^2 = b^2 + c^2\] Como sabemos que a potenciação é o inverso da radiciação, podemos escrever essa fórmula da seguinte maneira: \[a = \sqrt{b^2 + c^2}\] Passando para os valores x e y que já temos: \[a = \sqrt{7^2 + 6^2}\] Podemos comprovar que o resultado é 9,21 (que arredondei para 9). Não se esqueça da notação de módulo ao apresentar o resultado final: \[\left|\vec{v}\right| = \sqrt{7^2 + 6^2}\] E aqui está o código C que nos permite informar os valores x e y do vetor e obter o seu comprimento, tamanho ou módulo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]){
float x, y, norma;
// vamos ler os valores x e y
printf("Informe o valor de x: ");
scanf("%f", &x);
printf("Informe o valor de y: ");
scanf("%f", &y);
// vamos calcular a norma do vetor
norma = sqrt(pow(x, 2) + pow(y, 2));
// mostra o resultado
printf("A norma do vetor é: %f", norma);
printf("\n\n");
system("PAUSE");
return 0;
}
Ao executar este código C nós teremos o seguinte resultado: Informe o valor de x: 7 Informe o valor de y: 6 A norma do vetor é: 9.219544457292887 Novamente note que arredondei o comprimento do vetor para melhor visualização no gráfico. Para calcular a norma de um vetor no espaço, ou seja, no R3, basta acrescentar o componente z no cálculo. |
Nossas 20 dicas & truques de programação mais populares |
|
PHP - Como converter graus em radianos em PHP usando a função deg2rad() - Trigonometria para iniciantes C# - Como excluir todos os itens selecionados em uma ListBox de múltipla seleção do C# Windows Forms |
Você também poderá gostar das dicas e truques de programação abaixo |
|
C# - Como detectar a mudança de estado da CheckBox do C# Windows Forms usando o evento CheckedChanged C# - C# Windows Forms - Como verificar o estado da tecla Num Lock em suas aplicações C# Windows Forms |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






