Método recursivo con retorno

Tengo que escribir un método recursivo que contará la suma de todos los números pares con los que no se puede dividir 7en forma de intervalo 1hasta un parámetro.

No puedo usar ningún bucle. Así de lejos llegué, pero parece que mi afirmación no es correcta.

¿Alguna sugerencia?

public static int specialSum (int x){
    return (x % 2 == 0) && (x % 7 != 0) ? specialSum(x - 1) + 1 : 0;
}

public static void main(String[] args) {
    System.out.println(specialSum(16));
}
Respuesta 1

Si necesita encontrar la suma de tales números ( x % 2 == 0 && x % 7 != 0) positivos ( x > 0):

public static int specialSum (int x) {
    return x > 0 ?
            specialSum(x - 1) + (x % 2 == 0 && x % 7 != 0 ? x : 0) :
            0;
}
Respuesta: 2

tienes que cambiar el método de suma especial de esta manera:

public static int specialSum (int x){
    if(x == 1)  return 0;
    return ((x % 2 == 0) && (x % 7 != 0) ? specialSum(x - 1) + x   : specialSum(x - 1));
}
Respuesta: 3

La lógica de tu recursivo tiene dos problemas:

  1. Intenta devolver el recuento y no la suma de números que son válidos
  2. Y la recursión no llega a todas las ramas, porque termina cuando llega a un caso no válido.

Si desea la suma, debe devolver specialSum(x-1)+xno specialSum(x-1)+1. Este es un ejemplo que funcionaría:

public static int specialSum (int x){
    if(x == 0) return 0; // ← degenerate case
    return ((x % 2 == 0) && (x % 7 != 0) ? specialSum(x - 1) + x : specialSum(x - 1));
}

Podría agregar un poco de simplificación inteligente reemplazando specialSum(x - 1) + xpor specialSum(x - 2) + x, porque sabe que x - 1será extraño si xes par.

Respuesta: 4

Debe recurrir al siguiente número, ya sea que cuente o no el número actual.

boolean divisibleBy2Not14 = ((x % 2 == 0) && (x % 7 != 0);
return (divisibleBy2Not14 ? x : 0) + (x > 0 ? specialSum(x - 1) : 0);
Respuesta: 5

Había configurado la compilación de Jenkins para compilar el proyecto Gradle y ejecutar pruebas en él (usando connectedInstrumentTest) pero la compilación falla varios segundos después del inicio. Stacktrace: com.android.ddmlib ....

a qué constructor de la clase string se le llama cuando creamos un objeto string usando String literal. Ejemplo: String str = "hola"; En este caso, ¿qué constructor de la clase string obtiene?

¿Alguien más notó que hay una gran diferencia de rendimiento entre un TreeViewer y un TableViewer (TreeViewer es mucho más rápido). Tengo una tabla que contiene CellEditors (con EditingSupport) ...

Por ejemplo, tengo tres sistemas diferentes. el sistema n. ° 1 es una aplicación web java con su propio sistema de identificación n. ° 2 es la aplicación php con su propio sistema de identificación n. ° 3 es la aplicación web .net ...