题目:求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
方法(1):利用两个静态成员变量,调用n次构造函数
class SUM
{
private:
static int i;
static int sum;
public:
//构造函数
SUM()
{
i++;
sum+=i;
}
static void Set()
{
i=0;
sum=0;
}
//获取sum
static int GetSum()
{
return sum;
}
};
//静态成员变量的初始化
int SUM::i=0;
int SUM::sum=0;
class Solution {
public:
int Sum_Solution(int n) {
SUM::Set();//每次重置一下变量i和sum,否则多次测试每次都会累积
SUM* ptr = new SUM[n];//调用n次构造函数
int ret=SUM::GetSum();
return ret;
}
};
方法(2):巧用条件判断的递归法
int Sum_Solution(int n) {
int ans = n;
ans && (ans += Sum_Solution(n - 1));
return ans;
}