求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3
输出: 6
示例 2:
输入: n = 9
输出: 45
限制:
1 <= n <= 10000
思路:
一开始就直接用(1+n)/2.0*n来计算了,还在想今天的居然这么简单,然后再仔细一看题目,发现不能用乘除法,emmmmmmmmm。然后就改用递归写了。
flag那句的意思,当n大于零时,加。等于0时,就返回0。
ps:&&符号中如果前面的false就不执行后面的了,所以暴力可以把最容易false的放在前面
class Solution {
public int sumNums(int n) {
int answer = n;
boolean flag = n > 0 && (answer += sumNums(n - 1)) > 0;
return answer;
}
}