Dificuldade com logica de programação

Bem, estou resolvendo um problema " faça um programa que leia um numero “n” ( n > 0 ) e calcule o valor de R pela formula : 15 - 15/3 + 15/5 - 15 / 7 + … + 15/2*n+1", estou sem saber qual função utilizar para prosseguir com o código… sou bem novato na area então quem poder dar uma luz eu agradeço…

Código até agora :

import java.util.Scanner;

public class projeto2 {

/**

  • @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int n;
    int d;
    int r;
    int a;
    System.out.println(“Informe o valor de N”);
    Scanner s = new Scanner(System.in);
    n = s.nextInt();
    if (n <= 0){
    System.out.println(“valor de N Invalido”);
    }
    else {
    int f[] = new int[n];
    r = s.nextInt();
    d = s.nextInt();
    }

}
}

não consigo achar uma logica que resolva essa questão, quem puder dar uma dica eu agradeço…!!!

Rescreva aquela equação para facilitar o entendimento

para     temos
n = 1 >> R[1] = 15 + (-15 / 3)
n = 2 >> R[2] = R[1] + (15 / 5)
n = 3 >> R[3] = R[2] + (-15 / 7)
n = n >> R[n] = R[n - 1] + (sinal * 15 / (2*n+1))

O sinal pode ser calculado assim:

public static int sinal(int n) {
	return -2 * (n % 2) + 1;
}

Agora tem duas formas de resolver o problema:

  • Recursivamente

Basta rescrever o código para n = 1 e n = n:

double calcular(n) {
  // n = 1 >> R[1] = 15 + (-15 / 3)
  if (n == 1) return 15.0 + (-15.0 / 3.0);

  // n = n >> R[n] = R[n - 1] + (sinal * 15 / (2*n+1))
  if (n == n) return calcular(n - 1) + (sinal(n) * 15.0 / (2.0 * n + 1.0));
}
  • Iterativamente

Inicia um acumulador e soma os valores de 1 até n:

double soma = 0.0;
for (i = 1 até n) {
  soma = soma + (sinal(i) * 15.0 / (2.0 * i + 1.0));
}