Recursividade com subtração

Boa Noite , se alguém poder me ajudar

Fiz dessa forma o exercício de subtração na recursividade

        public static void main(String[] args) {
            int[] v = {2, 5, 8, 6, 2, 4, 2};

            int separador = condicao(v, 0);
            System.out.println(separador);
        }

        public static int condicao(int[] v, int tamanho) {

            int r = -1;
            if (tamanho < v.length) {

            }
            if (v[tamanho] / 2 != 1) {
                return 0;
            } else {

                return r * v[tamanho];
            }
        }
    }

o Problema que ele não está somando os (- 2 ), nesse caso o resultado teria que dar (-4)

Onde está a recursividade?
O que esse método condicao está fazendo?

Não entendi sua lógica:

  • se o tamanho informado for menor que o tamanho do vetor v, não faz nada

  • se a divisão por 2 do elemento na posição tamanho for diferente de 1 então o método retorna 0

  • senão retorna o elemento na posição tamanho multiplicado por -1

Você chegou a fazer um teste de mesa desse seu algoritmo?

Sim , ele imprime somente os numero que quero , que é - 2

Mas nesse caso ele deveria trazer ele somado que seria (-4)

Mas o primeiroif é completamente desnecessário, pois ele não faz nada.

Por que somado?
Seu enunciado pede uma subtração, não soma.

O que você está fazendo é só inverter o sinal do número (multiplicando por -1)
Mas o que você deveria fazer é subtrair os números 2
Seu código só está passando pelo Primeiro elemento pois você não está usando recursividade.

public class Programa {

    public static void main(String[] args) {
        Programa programa = new Programa();
        programa.executar();
    }

    public void executar() {
        int[] v = new int[] { 2, 5, 8, 6, 2, 4, 2 };
        int resultado = subtrair(v, v.length);
        System.out.println(resultado);
    }

    public int subtrair(int[] vetor, int tamanho) {
        if (tamanho <= 0) {
            return 0;
        }
        int numero = vetor[tamanho - 1];
        if (Math.abs(numero) != 2) {
            numero = 0;
        }
        return subtrair(vetor, tamanho - 1) - numero;
    }
}
1 curtida

Obrigado , agr eu entendi como funciona esse método . quando eu falei em soma ,por exemplo quis dizer se eu tenho o numero [2458221582] ele irá trazer somando e negativo os 2 , ai ele imprime o -8, obg , agr vou continuar estudando aqui :call_me_hand: