[Lc]面试题64求1+2+…+n
Contents
题目
题解
题目要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
递归一般要用条件判断终止递归,这道题使用逻辑运算符的短路性质,前半段不满足的时候就不执行后半段,完成递归
- 时间复杂度$O(n)$
- 空间复杂度$O(n)$,递归
class Solution {//一个方法。1.递归求解和逻辑运算符短路
public:
int sumNums(int n) {
//x是bool变量
//前半段用来判断是否执行后半段
//当n>1的时候,就继续递归(后半段)
//否则停止递归,一层一层返回结果
bool x = (n > 1) && (n += sumNums(n - 1));
return n;
}
};
Author ChrisHRZ
LastMod 2020-07-02