zoukankan      html  css  js  c++  java
  • 剑指offer——求1+2+3+...+n

    求1+2+3+...+n

    求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

    自己没有思路

     看的别人的思路:

    因为不能使用判断,循环等语句,所以只能用别的方法来替代判断条件

    短路&&的话有一个判断机制

    当前面一个条件为假时,后面的条件不会继续判断

    当前面的条件为真时,后面的条件才会继续判断

    在n > 0 && (sum += Sum_Solution(n - 1)) ;这里如果单独这样写的话,java中这不算是一个statement  报错  error: not a statement

    必须要是一个声明的话,就要有赋值,而且n > 0是一个判断语句,所以得到的是boolean,所以

    boolean flag = n > 0 && (sum += Sum_Solution(n - 1)) 

    还是会报错: error: bad operand types for binary operator '&&'

    但是这句判断语句的后面sum += Sum_Solution(n - 1)是一个求值,要想是判断的话,要加上(sum += Sum_Solution(n - 1))>0

    即为最后的  boolean flag = n > 0 && (sum += Sum_Solution(n - 1)) > 0;

    public class Solution {
        public int Sum_Solution(int n) {
            int sum = n;
            boolean flag = n > 0 && (sum += Sum_Solution(n - 1)) > 0;
            return sum;
        }
    }
    

      

  • 相关阅读:
    git
    浏览器喧嚷过程
    B/S架构与C/S架构
    simpleDateFormat
    oracle中case when的用法
    Java程序利用Jdbc连接数据库
    List 和 Set与Map
    队列和栈
    toString方法分析
    java中的构造器
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8628740.html
Copyright © 2011-2022 走看看