题目:
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
方法一:
递归,用与运算的短路特性,n每次减1,当n减到0时,后面的不再计算,也就是不再递归
class Solution {
public:
int Sum_Solution(int n) {
int val = n;
val && (val += Sum_Solution(val-1));
return val;
}
};
方法二:
建立一个矩阵,n行,n+1列,计算矩阵元素个数再除2
class Solution {
public:
int Sum_Solution(int n) {
int a[n][n+1];
return sizeof(a)/(sizeof(int)*2);
}
};
方法三:
(n+1)n/2=(nn+n)/2
class Solution {
public:
int Sum_Solution(int n) {
int sum=pow(n,2);
sum=sum+n;
return sum>>1;
}
};