[RESOLVIDO]Duvida - Fibonacci Recursivo utilizando operador ternario

4 respostas
JRobert

Olá pessoal. Estou estudando a Apostila da Caelum fj-11;

No capitulo 4, sessao 4.13, há um exercicio para fazer o algoritmo fibonacci de forma recursiva. Até ai nenhum problema.

Mais a frente pede-se para fazer o mesmo algoritmo utilizando o operador ternario e que tudo seja feito em apenas uma linha.

Já havia pesquisado sobre este operador e pelas minhas conclusoes funciona da seguinte forma: variavel = (condicao) ? caso seja verdadeiro : caso seja falso;

Agora como posso utilizar o operador ternario para mais de uma condicao? Pois meu codigo fibonacci recursivo utiliza duas condicoes.
vejam:

class Fibonacci{

   int calculaFib(int n) {  
      if (n == 0)  
         return 0;  
      else if (n == 1)  
         return 1;  
      else	
         return calculaFib(n-1) + calculaFib(n-2);  
   }  
}

Como utilizar o operador ternario para as duas condiçoes e usar apenas uma linha para isso?

4 Respostas

Josemar_Jobs

int calcFibo(int n) { return n == 0 ? 0 : (n == 1 ? 1 : calculaFib(n - 1) + calculaFib(n - 2)); }

JRobert

Josemar Jobs:
int calcFibo(int n) { return n == 0 ? 0 : (n == 1 ? 1 : calculaFib(n - 1) + calculaFib(n - 2)); }

muito obrigado. Acho que compreendi.
entao para usar multiplas condicoes, basta depois dos : iniciar novamente o operador com a nova condicao? Estou correto?

B

Algúem poderia me ajudar nesse exercício…???

Os números de Fibonacci formam uma sequência em que cada número é igual à soma dos dois anteriores. Os dois primeiros números são, por definição igual a 1, segundo o exemplo abaixo:
Ex: 1 1 2 3 5 8 13 …

Escreva um programa que carregue um úmero inteiro pelo teclado e indique se ele faz parte da sequência de Fibonacci.

marciovmartins

Sei que a mensagem é antiga. Porem estou fazendo o curso da Caelum também e fiz o seguinte código baseado no que aprendi neste tópico.

class Fibonacci { int calculaFibonacci(int n) { return n > 1 ? this.calculaFibonacci(n-1) + this.calculaFibonacci(n-2) : n; } }

É sempre bom compartilhar…

Abraço

Criado 7 de março de 2011
Ultima resposta 1 de dez. de 2012
Respostas 4
Participantes 4