求1+2+3+…+n
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。
1、n次調用構造函數,對靜態成員進行操作。
2、遞歸寫法,根據&&短路使得遞歸結束。
3、不要懷疑自己對構造不理解,而是這裏他確實有問題,對於已經初始化的靜態成員,他變化不可控,因此我們需要在程序中對他再次進行初始化。這可能是他別的原因造成的。
class Sum{
public:
Sum(){
++i;
sum+=i;
}
static int getSum(int n);
private:
static int sum;
static int i;
};
int Sum::sum=0;
int Sum::i=0;
int Sum::getSum(int n){
sum=i=0;
vector<Sum> vs(n);//n次調用構造函數
return sum;
}
class Solution {
public:
int Sum_Solution(int n) {
int res=n;
res&&(res+=Sum_Solution(n-1));//&&短路性質,遞歸結束
return res;
// return Sum::getSum(n);
}
};
另外的奇思妙想:將計算交給別的函數
char a[n][n+1];//支持不確定下標值
return sizeof(a)>>1;
還有(pow(n,2)+n)>>1求取的。雖然不太符合原意,但是在一定程度上打開了思維。