题目内容
Java代码
解法1
class Solution {
public int sumNums(int n) {
int sum=n;
boolean flag = n > 0 && (sum+=sumNums(n-1)) >0;
return sum;
}
}
解法2
class Solution {
public int sumNums(int n) {
return (int)(Math.pow(n,2) + n) >> 1;
}
}
解题思路
- 利用逻辑与运算&&前半句为假后半句就不再运行的特性,递归从n一直加到1。
- 高斯求和 (1+n)×n/2 = (n+n2)/2
Math.pow(n,2)
表示n的2次幂,>>
是位运算符,二进制中右移一位相当于除以2。 这种题应该从题库中移除