• 问题

1+2+...+n ,要求不能使用乘除法、forwhileifelseswitchcase等关键字及条件判断语句(A?B:C)

  • 示例 1:

输入: n = 3
输出: 6

  • 示例 2:

输入: n = 9
输出: 45

  • 限制:

1 <= n <= 10000

  • Solution one

利用递归和 && 短路运算符让每次递归命中递归函数,并用短路控制执行边界。

class Solution {
    public int sumNums(int n) {
        int res = n;
        boolean b = (n > 0) && ((res += sumNums(n - 1)) > 0);
        return res;
    }
}
  • Solution two

利用等差数列和公式结合Java Math工具类完成计算

class Solution {
    public int sumNums(int n) {
         return (int)(Math.pow(n,2) + n) >> 1;
    }
}