Duvida operador ternário [+resolvido]

4 respostas
vega

Oi pessoal, estou estudando sobre recursão. e o código abaixo funciona:

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);
		}
		
		
	}

}

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

public int calculaFibonacci(int i) {

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

}

O erro que aponta é syntax error in this tokens (??) e o sublinhado é na expressao booleana inicial i<=0, realmente não entendi

Obrigado

4 Respostas

isaiaspf

Vega,

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

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

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

isaiaspf:
Vega,

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

Poxa… deu certo cara, era o return
Valeu mesmo

ViniGodoy

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);

Criado 20 de julho de 2011
Ultima resposta 20 de jul. de 2011
Respostas 4
Participantes 4