Encuentre recursivamente la suma de dígitos, incluidos los números negativos

Estoy trabajando en algunos desafíos usando la recursividad en Java (un nuevo concepto para mí). Actualmente estoy trabajando en un método recursivo que da la suma de dígitos dado un parámetro largo (n). Salida prevista:

  • 257 = 14
  • -257 = -14

He intentado la edición de mi caso base para incluir los números sólo entre 1 y 10, a continuación, disminuir la suma de sumOfDigits(), pero, obviamente, no se puede utilizar un if, else ifo elsedeclaración en un método recursivo. ¡Estoy atascado! ¿Alguien puede guiarme hacia la solución? Aquí está mi método:

    public static long sumOfDigits(long n){

    long sum = n %10;
    if ( n < 10){
        return sum;
    } else {
        return sum += sumOfDigits(n%10);
    }
}
Respuesta 1

Para cualquiera que se pregunte, ¡logré resolver esto yo mismo! Solución:

public static long sumOfDigits(long n){

    long sum = n %10;

    if (n == 0) return 0;

    if ( n >= 1 && n < 10){
        return sum;
    } else if (n < 0){
        return sum - sumOfDigits(-n %10);
    } else {
        return sum + sumOfDigits(n%10);
    }
}
Respuesta: 2

Creo que la solución es más simple de lo que la gente está tratando de lograrlo:

public static long sumOfDigits(long n) {

    long digit = n % 10;

    if (n == digit) {
        return n;
    }

    return digit + sumOfDigits(n / 10);
}

La suma en la returndeclaración es independiente del signo, ya que está agregando positivos a positivos o negativos a negativos.

La parte difícil es la extracción y prueba de dígitos: depende del operador restante de Java (%) que conserva el signo del número a la izquierda. En algunos lenguajes (por ejemplo, Python), este es un operador de módulo que siempre devuelve un resultado positivo. Si está trabajando con un lenguaje con módulo, que no conserva el signo, necesitará una solución para esto (por ejemplo, las funciones abs()y / o sign()).

Respuesta: 3

Quiero registrar eventos de la consola WebView. A veces recogen peculiaridades en el navegador subyacente utilizado y pueden ayudar con la resolución de problemas. Es posible utilizar una clase de implementación de Sun para interactuar ...

Tengo un código a continuación que utilizo para consultar la base de datos y agregar datos a la lista, Consulta q = session.createQuery ("select tally_receipt_prefix, tally_receipt_no, tally_head, tally_amount ...

Pude usar esta pregunta como punto de partida para analizar un archivo "mht" pero el "3D" en las etiquetas de anclaje (por ejemplo: <a href=3D"[my anchorfont>"> [texto de anclaje]> </ a >) rompe todos los ...

Tengo un conjunto con hashmaps multidimensionales, así: Set <HashMap <String, HashMap <String, String >>> myHashSet = new HashSet <HashMap <String, HashMap <String, String >> & ...