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