Oi pessoal, estou estudando sobre recursão. e o código abaixo funciona:
[code]package desafio;
public class Fibonacci {
int var1=0;
int var2=1;
int contador=0;
public int calculaFibonacci(int i) {
if(i<=0){
return var1;
}else{
var2+=var1;
var1=var2-var1;
return calculaFibonacci(i - 1);
}
}
}
[/code]
Porém logo após, pede para substituir o código de dentro do método por operadores ternários
Olha abaixo… não funciona… e a maioria dos lugares que pesquisei diz que funcionaria
[code]public int calculaFibonacci(int i) {
(i<=0)?return var1:return calculaFibonacci(i-1);
}[/code]
O erro que aponta é syntax error in this tokens (??) e o sublinhado é na expressao booleana inicial i<=0, realmente não entendi
Ele é um operador matemático, uma expressão formada por:
condição ? retorno se verdadeiro : retorno se falso
Toda a expressão é avaliada de uma vez só, e o valor de retorno será o resultado dessa avaliação.
Os valores de retorno devem existir e serem do mesmo tipo. Isso porque toda essa expressão é avaliada e sobra dela apenas um número, que deve ser consistente seja qual o caminho que a avaliação tomar.
As vantagens do ternário sobre o if é que, por ser uma expressão, ele pode ser escrito dentro da chamada de funções: