题目描述
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例
- 示例 1:
输入: n = 3
输出: 6
- 示例 2:
输入: n = 9
输出: 45
限制
- 1 <= n <= 10000
解题思路
- 等差数列前 n 项求和, an = (a1 + an) * n / 2
- 首先题目不让用乘号,所以不能直接计算
- 从 1 累加到 n,不能使用 for、while 等循环,还是不能计算
- 递归计算,递归会用的 if 条件判断来设置递归终止条件,也不能直接拿来用
- 但是使用逻辑与 && 可以实现递归终止和正常运行的情况
a && b
如果 a 为假,则不会处理 b
如果 a 为真,接着对 b 进行判断
代码
class Solution {
public:
int ans = 0;
int sumNums(int n) {
n > 1 && sumNums(n-1);
ans += n;
return ans;
}
};
提交结果
总结
- 灵活运用逻辑与 && 和逻辑或 ||