[Entrenamiento de novatos] Oferta de dedo espada 64 Buscando 1 + 2 +… + n (operador lógico)

Descripción del Título:

Buscar 1 + 2 +… + N. Se requiere que las palabras clave como multiplicación y división, for, while, if, else, switch, case y sentencias de juicio condicional (A? B: C) no se pueden utilizar.

Ejemplo 1:
Entrada: n = 3
Salida: 6

Ejemplo 2:
Entrada: n = 9
Salida: 45

Restricciones:
1 <= n <= 10000
Fuente: LeetCode
Enlace: https://leetcode-cn.com/problems/qiu-12n-lcof Los
derechos de autor son propiedad de LeetCode . Para reimpresiones comerciales, comuníquese con la autorización oficial. Para reimpresiones no comerciales, indique la fuente.

Ideas de resolución de problemas:

Sin restricciones, tenemos muchas formas de resolver este problema, tales como: fórmula de suma de secuencias aritméticas, iteración, recursividad, etc. Pero esta pregunta nos impide usar la multiplicación y la división, por lo que no se puede usar la fórmula de suma. For y while no se pueden utilizar, por lo que no se puede utilizar la iteración. ¿Qué pasa con la recursividad restante? Como todos sabemos, la recursividad debe exportarse. Generalmente, si se utilizan sentencias de juicio condicional para exportar, ¿se pueden utilizar otros métodos para exportar?

Antes de presentar la solución, primero revise un conocimiento. Los operadores lógicos && y || tienen un efecto de cortocircuito, a && b, cuando a es falso, el sistema no verificará si b es falso, porque no importa cuál sea, no cambiará el resultado de a && b. a || b, cuando a es verdadero, el sistema no verificará si b es verdadero, porque no importa cuál sea, no cambiará el resultado de a || b.

Entonces, en este problema, ¿podemos usar operadores lógicos para resolverlo, por supuesto, cuando ponemos la declaración recursiva a la derecha de && y la salida recursiva a la izquierda, cuando la salida es falsa, el sistema no funcionará? Mire el extremo derecho de &&, por lo que el programa no se repetirá. Esto satisface nuestras necesidades.

Código:

public class jianzhi_Offer_64 {
    
    
    public int sumNums(int n) {
    
    
    //注意此处必须为语句,所以我们可以造一个无关紧要的变量
    //逻辑与算符两端需要时boolean变量
        boolean flag =  (n != 0)&& ((n += sumNums(n - 1))!=0);
        return n;
    }



    public static void main(String[] args) {
    
    
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        jianzhi_Offer_64 obj = new jianzhi_Offer_64();
        System.out.println(obj.sumNums(n));
    }
}

Nota: también puede usar el constructor para resolver.

Supongo que te gusta

Origin blog.csdn.net/Puppet__/article/details/115033872
Recomendado
Clasificación