难度:中等
题目
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
输入: n = 3
输出: 6
示例 2:
输入: n = 9
输出: 45
限制:
1 <= n <= 10000
解答
思路
递归,相当于循环
逻辑符短路,相当于条件判断
知识点
复杂度 | O |
---|---|
时间复杂度 | O(n) |
空间复杂度 | O(1) |
代码
class Solution {
public:
int sumNums(int n) {
// 递归
int sum=0;
sumNumsCore(n,sum);
return sum;
}
bool sumNumsCore(int n,int& sum)
{
sum+=n;
n--;
n>0&&sumNumsCore(n,sum);
return 0;
}
};