- 问题
求 1+2+...+n
,要求不能使用乘除法、for
、while
、if
、else
、switch
、case
等关键字及条件判断语句(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;
}
}