要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)

上来就使用公式法做了

class Solution {
public:
    int sumNums(int n) {
        return (1+n)*n/2;
    }
};

做完发现不能用乘除法

使用短路方法实现判断
用递归实现循环

class Solution {
public:
    int sumNums(int n) {
        int res = n;
        (n>0) && (res+=sumNums(n-1));
        return res;
    }
};

评论区看到大佬方法,其实有点投巧

公式(1+n)*n/2
使用矩阵空间实现(1+n)*n
使用右移符号实现 /2

class Solution {
public:
    int sumNums(int n) {
        bool arr[n][n+1];
        return sizeof(arr)>>1;
    }
};