wellington.nogueira:
Cara,
Tenho a linha resolvida aqui. Só não postei pq o interesse é que você aprenda. Se teoricamente, você entendeu, não deve ser difícil resolver.
Como disse, montei a estrutura, é só trocar os bloquinhos. Teu único "problema" é onde vai ficar o Sysout. MAs isso te ajudo a resolver depois que você montar a linha do ternário.
if(b>500){ //CONDICAO
return 0; //RESULTADO_CASO_CONDICAO_VERDADEIRO
}else{
System.out.println(a); //tire isso daqui.
return calculaFibonacci(b, a+b); //RESULTADO_CASO_CONDICAO_FALSO
}
//Coloque o return antes do ternário (não pode haver o return entre os sinais [b]?:;[/b])
Ternário é um pouco estranho mesmo, mas uma vez compreendido, fica muito simples ;)
ok Brother!
Peguei a tua logica (pq a minha nao funfa com ternario devido a ter mais de uma instrução) e montei o ternario, mas eu confesso que com a tua lógica ficou muito facil construir o ternario.
Tenho a impressão q eu tava quebrando a cabeça em cima do ternario mas o problema é que nunca ia dar mesmo pq eu tinha que mudar pra uma lojica mais sucinta pra poder ser aceita na sintaxe do ternario.
class Fibonacci {
int calcula(int a, int b){
return (b > 500) ? 0 : calcula(b, a+b);
}
}
[code]class GeraSerie {
public static void main(String[] args){
Fibonacci fibo = new Fibonacci();
int i = fibo.calcula(0, 1);
System.out.print(i);
}
}
tinha que te me esforçado mais pra sair da minha lógica (duas instruções pra procesar):
a = a + b
b = b + a
e descobrir a tua(uma instrução apenas):
(b, b + b)
Assim compilou e rodou ok (claro: Permanece o problema de "como vai imprimir" sem ferir o que o exercicio pede que é "recursividade+ternario+1 linha só")
to até fazendo teste de mesa aqui pra entender essa logica passo a passo pq nao saquei legal ainda.