Dúvida com recursiva

Estou com um problema em recursiva.
Estou tentando fazer este exercício S = (n/2) + ((n-1)/4) - ((n-2)/2) + ((n-3)/4)…+ ou -(1/(2 ou 4)), porém sempre quando eu faço, o valor sai errado porque na recursiva ele acaba fazendo a conta da direita para a esquerda.
Como eu posso fazer ele ficar da esquerda para direita, ou numa maneira que saia o mesmo resultado?
Por exemplo:
n = 4
S = (4/2) + ((4-1)/4) - ((4-2)/2) + ((4-3)/4)
[color=red]=>[/color] S = (4/2) + (3/4) - (2/2) + (1/4) [color=red]=>[/color] S = (2) + (0.75) - (1) + (0.25) [color=red]=>[/color] S = 2.75 - 1 + 0.25 [color=red]=>[/color] S = 1.75 + 0.25 [color=red]=>[/color] S = 2
Com a recursiva ele faz o cálculo assim:
n = 4
S = (4/2) +
S = (3/4) -
S = (2/2) +
S = (1/4)

S = 2 +
S = 0.75 -
S = 1 +
S = 0.25

S = 2 +
S = 0.75 -
S = 1 + 0.25 = 1.25

S = 2 +
S = 0.75 - 1.25 = -0.5

S = 2 - 0.5 = 1.5

Esse é o problema ele faz a conta da Direta para a esquerda.
Meu código é:

[code]import javax.swing.JOptionPane;
public class EXFat03 {
public static void main (String args[]){
double n;
int z = 0;

    n = Double.parseDouble(JOptionPane.showInputDialog("Colocar o valor de n"));
    
    System.out.println("O resultado é " +sfat(n,z));
}

public static double sfat(double num, int z){
    double s = 0;
    
    
    if (num == 1){
        if ( z == 0){
            return (num/2);
        }
        else if ( z == 1 ){
            return (num/4); 
        }
    }
    else {
        if (z == 0){
            s =  (num/2) + (sfat(num -1, z +1));
        }
        else if (z == 1){
            s = (num/4) - (sfat(num -1, z -1));
       }
    }
    return s;
}[/code] 

Podem me ajudar?
Tem que ser em recursiva esse exercício.

Obs: Eu usei o 4 como exemplo, mas se eu colocar outros valores ele pode as vezes bater e as vezes não.

Ninguém pode me ajudar?

rafa11, infelizmente não entendi a lógica que utilizou.

Procure sempre dar nomes expressivos para suas variáveis para quem ler seu código entender o que acontece.

Pela sua demonstração, me parece que está tendo problema para alternar entre soma/subtração.

Para ficar mais simples, ao invés de somar e subtrair, você pode simplesmente somar sempre, alternando o sinal de cada parte a partir do segundo.

A fórmula ficaria: S(N) = N/2 * 1 + (N-1)/4 * 1 + (N-2)/2 * -1 + (N-3)/4 * 1

Fiz por cima com esse código abaixo, tenta adaptar com a sua lógica:

	public static double s( double n, int divisor, int sinal, int termo) {
		if ( n == 0 ) { 
			return 0;
		} else {
			
			double proximoN = n - 1;
			int proximoDivisor = termo % 2 == 0 ? 2 : 4;
			int proximoSinal = termo % 2 == 0 ? -1 : 1;

			return (n / divisor * sinal ) + s( proximoN, proximoDivisor, proximoSinal, ++termo  );
			
		}		
	}

Camarada, fiz um código parecido com o seu , veja se era o seu objetivo:

[code]public class EXFat03 {
static double soma=0;
static int z=2;
public static void main (String args[]){
double n;

	n = Double.parseDouble(JOptionPane.showInputDialog("Colocar o valor de n"));  
	resultado(n);

	System.out.println("O resultado é " +soma); 
	
}  

public static void resultado(double n){

	if(n>0){
		System.out.println(n/z);
		if(z==2)
		{
			System.out.println("+");
			soma+=n/z;
			z=4;
		}
		else{
			System.out.println("-");
			soma-=n/z;
			z=2;
		}
		resultado(n-1);
	}
}[/code]