Duvida operador ternário [+resolvido]

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

Obrigado

Vega,

Tenta assim:return (i<=0) ? var1 : calculaFibonacci(i-1);Abraço.


private int jay(){
	int i = 0;
	int jow =i<=0? 1: 2; 
	return jow;
	}

int jow -i<=0?var1:calculaFibonacci(i-1);  
return jow;

[quote=isaiaspf]Vega,

Tenta assim:return (i<=0) ? var1 : calculaFibonacci(i-1);Abraço.[/quote]

Poxa… deu certo cara, era o return
Valeu mesmo

O operador ternário não é exatamente um if.

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:

imprimir(alunos > 50 ? Local.Monitor : Local.Papel);

Com if, essa expressão obrigatóriamente deveria ficar assim:

if (alunos > 50) imprimir(Local.Monitor); else imprimir(Local.Papel);