I was able to do the calculation by creating two functions, one to calculate any term of the sequence (recursive), and another to test whether the returned terms are even or not.
Function to calculate terms:
/**
* Funcao: calcular certo termo par da série de Fibonacci começando em 1
* @param quantidade - termo desejado na sequencia Fibonacci
*
* valores esperados para quantidade = 1
* 2
* valores esperados para quantidade = 2
* 8
* valores esperados para quantidade = 5
* 610
*/
public static int funcao08 (int quantidade){
int termo = 0;
if (quantidade == 1 || quantidade == 2){
return (1);
} else {
if (quantidade > 1){
termo = funcao08(quantidade - 1) + funcao08(quantidade - 2);
} // fim do if
return termo;
}// fim do if
} // fim do funcao08
Function to test whether the term is even:
/**
* Funcao para auxiliar a achar um determinado termo par
* na sequencia Fibonacci.
*
*/
public static int numeroPar(){
int termo;
int controle = 1;
int termoPar = 0;
termo = IO.readint("Informe a ordem do termo par: ");
while (termo > 0){
// para controle = 1 pega o primeiro termo
termoPar = funcao08(controle);
// testa se o termo é par
if (termoPar % 2 == 0){
// se o termo for par decrescer 1
// para indicar que um termo foi encontrado
termo = termo - 1;
// para passar para o proximo termo
controle = controle + 1;
} else {
// se o termo nao for par acrescer uma unidade a controle
// para pegar o proximo termo e testar
controle = controle + 1;
} // fim do if
} // fim do while
return termoPar;
} // fim de numeroPar
How to make this parsimonious test only with a recursive function?