Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade)

Um método recursivo que calcula o número de Fibonacci para um dado índice - Lista de Exercícios Resolvidos de Java

Quantidade de visualizações: 6871 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 
Cada número da série é a soma dos dois números anteriores. A linha de baixo reflete o índice do número. Assim, quando falamos "O quinto número de Fibonacci", nós estamos nos referindo ao índice 4, ou seja, o valor 3.

Este algorítmos 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:

public static int fibonacci(int indice){
  // sua implementação aqui
}
Sua saída deverá ser parecida com:

Informe o índice: 6
O número de Fibonacci no índice informado é: 8
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // cria um novo objeto da classe Scanner
    Scanner entrada = new Scanner(System.in);
    
    // vamos solicitar o índice do número de Fibonacci
    System.out.print("Informe o índice: ");
    // lê o índice
    int indice = Integer.parseInt(entrada.nextLine());
    
    // calcula o número de Fibonacci no índice informado
    System.out.print("O número de Fibonacci no índice informado é: " +
      fibonacci(indice));
    System.out.println("\n");
  }
  
  // método recursivo que o número de Fibonacci em um determinado índice
  public static 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);
    }
  }
}


Link para compartilhar na Internet ou com seus amigos:

Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata)

Java MySQL - Como obter uma lista das funções numéricas (matemática) suportadas pelo MySQL usando o método getNumericFunctions() da interface DatabaseMetaData

Quantidade de visualizações: 5582 vezes
Em algumas situações gostaríamos de, via código, obter uma lista das funções numéricas, ou seja, funções matemáticas, suportadas pelo MS SQL Server. Para isso podemos usar o método getNumericFunctions() da interface DatabaseMetaData. É importante observar que, no Sun Microsystem's JDBC Driver for MySQL, a interface DatabaseMetaData é implementada por uma classe do mesmo nome, no pacote com.mysql.jdbc.DatabaseMetaData. E esta classe implementa o método getNumericFunctions() de forma a retornar a lista de funções numéricas separadas por vírgulas.

Veja um trecho de código Java no qual listamos todas as funções numéricas suportados no MySQL 5.0:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package estudosbancodados;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;

public class EstudosBancoDados{
  public static void main(String[] args) {
    // strings de conexão
    String databaseURL = "jdbc:mysql://localhost/estudos";
    String usuario = "root";
    String senha = "osmar1234";
    String driverName = "com.mysql.jdbc.Driver";

    try {
      Class.forName(driverName).newInstance();
      Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);

      // vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData
      DatabaseMetaData dbmd = conn.getMetaData();

      // vamos obter a lista de funções numéricas disponíveis
      // nesta versão do MySQL
      String funcoesNumericas = dbmd.getNumericFunctions();

      // como a lista de funções está separada por vírgulas, vamos obter
      // uma matriz de strings
      String funcoes[] = funcoesNumericas.split(",");

      // vamos mostrar o resultado
      for(int i = 0; i < funcoes.length; i++){
        System.out.println(funcoes[i]);
      }
    }
    catch (SQLException ex) {
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
    }
    catch (Exception e) {
      System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
    }
  }
}

Ao executarmos este código teremos o seguite resultado:

ABS
ACOS
ASIN
ATAN
ATAN2
BIT_COUNT
CEILING
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIN
SQRT
TAN
TRUNCATE


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos

Exercícios Resolvidos de Java - Programação Orientada a Objetos - Uma classe Temperatura que converte graus Celsius em Fahrenheit e vice-versa

Quantidade de visualizações: 7472 vezes
Exercício Resolvido de Java - POO - Programação Orientada a Objetos - Uma classe Temperatura que converte graus Celsius em Fahrenheit e vice-versa

Pergunta/Tarefa:

Escreva uma classe Java chamada Temperatura que converterá graus Celsius em Fahrenheit e vice-versa. Esta classe não possuirá nenhuma variável, nem de instância nem de classe, somente dois métodos, que deverão ter as seguintes assinaturas:

double celsiusParaFahrenheit(double)
double fahrenheitParaCelsius(double)
Note que os dois métodos recebem um argumento do tipo double e retorna um valor double.

Para facilitar a resolução, seguem abaixo as regras de conversão:

Celsius para Fahrenheit: F = (1,8 x C) + 32
Fahrenheit para Celsius: C = (F - 32) / 1,8

Depois de escrever a classe Temperatura, use o método main() da classe principal da aplicação Java para testar suas funcionalides.

Sua saída deverá ser parecida com:



Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

Código para a classe Temperatura.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

public class Temperatura {
  // converte de Celsius para Fahrenheit
  public double celsiusParaFahrenheit(double c){
    double f = (1.8 * c) + 32;
    return f;  
  }
  
  // converte de Fahrenheit para Celsius
  public double fahrenheitParaCelsius(double f){
    double c = (f - 32) / 1.8;  
    return c;  
  }    
}

Código para a classe Principal.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.util.Scanner;

public class Principal{ 
  public static void main(String args[]){ 
    // vamos criar um objeto da classe Temperatura
    Temperatura t = new Temperatura();
    
    // vamos fazer a leitura do usuário
    Scanner entrada = new Scanner(System.in);
    
    // primeiro de Celsius para Fahrenheit
    System.out.print("Informe o grau em Celsius: ");
    double celsius = Double.parseDouble(entrada.nextLine());
    System.out.println(celsius + " graus Celsius equivale a " +
      t.celsiusParaFahrenheit(celsius) + " graus Fahrenheit.");
    
    // agora de Fahrenheit para Celsius
    System.out.print("Informe o grau em Fahrenheit: ");
    double fahrenheit = Double.parseDouble(entrada.nextLine());
    System.out.println(celsius + " graus Fahrenheit equivale a " +
      t.fahrenheitParaCelsius(fahrenheit) + " graus Celsius.");
  } 
}



Java ::: Dicas & Truques ::: Arquivos e Diretórios

Manipulação de arquivos em Java - Como ler o conteúdo de um arquivo um byte de cada vez

Quantidade de visualizações: 11034 vezes
Nesta dica mostrarei como ler texto de um arquivo um byte
de cada vez. Para isso vamos usar o método readByte() da classe DataInputStream, do pacote java.io. Note que este método retorna um inteiro com sinal na faixa de -128 até 127.

Neste exemplo faremos um cast do byte lido para um char, já que estaremos lendo um arquivo de texto. Sim, é isso mesmo que você pensou. Se houver caracteres acentuados no arquivo texto, os mesmo não serão exibidos corretamente. A idéia do exemplo é mostrar o funcionamento do método readByte().

Veja o código Java completo:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.io.*;
 
public class Estudos{
  public static void main(String[] args){
    try {
      DataInputStream in = new DataInputStream(new BufferedInputStream(
        new FileInputStream("C:\\java\\conteudo.txt")));
         
      while (in.available() != 0){
        System.out.print((char) in.readByte());
      }
    } 
    catch (IOException e){
      System.out.println("Erro: " + e.getMessage());
    }
 
    System.exit(0);
  }
}

Ao executarmos este código nós teremos o seguinte resultado:

Primeira linha do arquivo
Segunda linha do arquivo
Terceira linha do arquivo


Desafios, Exercícios e Algoritmos Resolvidos de Java

Veja mais Dicas e truques de Java

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 20 usuários muito felizes estudando em nosso site.