题目

题解

题目要求不能使用乘除法、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;
    }
};