Curso caelum fj - 11

10 respostas
acidotherwise

Bom galera eu to tentando aprender java meio que altodidata ja programao em pascal e vb, eu baixei a apostila do fj - 11 da caelum porque onde moro não tem caelum para ver se consigo ter uma luz por ali, tem algume que se disponha a me dar uma força tenho algumas duvidas sobre alguns exercicios!

10 Respostas

Lavieri

qual duvida ? qual exercicio ?? posta sua duvida ai, quem puder, vai te ajudar,

Ps.: se vc buscar no forum, vai ter milhoes de posts sobre os exercicios desta lista

G

posta ae q a gente ajuda :smiley:

ps: o mecanismo e busca do forum n ta funcionando direito … so traz resultados recentes …

acidotherwise
  1. Um método pode chamar ele mesmo. Chamamos isso de recursão. Você pode resolver a série de fibonacci
    usando um método que chama ele mesmo. O objetivo é você criar uma classe, que possa ser usada da
    seguinte maneira:
    Fibonacci fibo = new Fibonacci();
    int i = fibo.calculaFibonacci(5);
    System.out.println(i);
    Aqui imprimirá 8, já que este é o sexto número da série.
    Este método calculaFibonacci não pode ter nenhum laço, só pode chamar ele mesmo como método. Pense
    nele como uma função, que usa a própria função para calcular o resultado.

poh desculpa o mal jeito ta ai na realidade eu não entendi muito bem oque ele querem nesse exercicio?

M

O objetivo é calcular a série sem usar laços de repetição (como for e while). Como você já deve saber, a série de Fibonacci segue a seguinte regra: a partir da soma dos dois números anteriores e dado o próximo número (começando com o zero e um). Logo o início da série é assim:

0
1
1
2
3
5
8
13
......

Certo?

A ideia é fazer essa série chamando o próprio método quantas vezes forem necessárias (cuidado com laços infinitos!). Para tanto, é preciso exercitar um pouco a lógica antes de colocar a mão na massa.

acidotherwise

sim isso eu ate entendi eu não entendi foi ele no exemplo que ele deu uma classe com um metodo dentro que devolve a posição da tabela fibonacci

M

Você não entendeu a estrutura da classe?

Devemos ter uma classe Fibonacci que tem apenas um método calculaFibonacci(int) que retorna um inteiro:

public class Fibonacci {
    public int calculaFibonacci(int valorDaSerie) {
        return 0; // TODO fazer algo aqui! o que? aí é com você! =P
    }
}
B

Funções recursivas são aquelas que chamam a si próprias dentro de seu código.

int recursivo()
{
  return recursivo();
}

Funções recursivas sempre tem duas partes: Condição de parada, e uma nova chamada ao metodo que aproxime desta condição.

int recursivo(int param)
{
  if (param <= 0) // condição de parada
    return 0; // aqui o método para de se chamar, e começa a se retornar
  else 
    return param + recursivo(param - 1); // aqui continuamos
}

Veja que a condição de parada depende dos parâmetros passados. Neste caso, é quanto param atinge 0. Para que ele faça isso, diminuimos o número passado por parametro na próxima etapa da recursão. Analizando o programa acima, ele calcula de todos os numeros de 0 até o número passado por parâmetro.

Lavieri

A recursividade desse exercicio é assim…

um número na seria de fibonaci é o resultado da soma dos 2 números anteriores… sendo assim

fibonacci(10) = fibonacci( 9 ) + fibonacci( 8 );

para fazer isso dentro de um método, é preciso de uma boa logica e de observação… o unico momento em que essa regra não é verdade é

fibonacci(0) é sempre 0
fibonacci(1) é sempre 1 …
para todos os outros o resultado é sempre a formula acima… fibonacci(n-1) + fibonacci(n-2)

assim esse xercicio usaria da recursividade + ou - assim

public class Fibonnaci { public static int calculaFibonacci(int index) { if (index == 0 || index == 1) return index; else return calculaFibonacci(index-1) + calculaFibonacci(index-2); } }

assim quando vc fizer…

System.out.println(Fibonnaci.calculaFibonacci(5));

ele ira calcular sempre invocando o proprio método… e quando chegar nso index 0 e 1… ele vai parar, pois nestes index não tem recursividade e assim evita o overflow ^^

Ps.: desculpa ter respondido o exercicio… mais o forum não tem o mecanismo de spoiler, para deixar o código escondido e vc só ler c quiser =/

acidotherwise

oi que isso eu te agradeço pela esplicação e foi muito interessante ver o codigo de como é feito assim consigo ter uma bas muito obrigado

se quizeres me adicionar no msn ficaria grato, caso não, não tem problema tbm. muito obrigado mesmo

Lavieri

sei q muitas vezes agente acha que pelo MSN resolve + facil o problema, porem c vc perguntar a uma unica pessoa no MSN, pode receber uma resposta que nem sempre é a melhor solução…

no forum vc terá resposta de varias pessoas, e quase sempre vai ver um consenso entre algumas pessoas, e assim dislumbrar um melhor resultado… porem posso adiconar sem problemas, manda o endereço ai, no post, ou por PM …

boa sorte ai dislumbrando o Java ^^

Criado 17 de fevereiro de 2009
Ultima resposta 17 de fev. de 2009
Respostas 10
Participantes 5