1. Question
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
2. Solution
-
利用构造函数求解
可以用构造函数求解,每次创建一个对象的时候都会去调用一次构造函数,那么我们就把静态变量的值加1.
-
虚函数求解
-
函数指针求解
-
模板求解
3. Code
class Solution {
public:
// 可以利用构造函数求解
int Sum_Solution(int n) {
// 需要初始化,因为测试程序会创建次对象。
reset();
// 创建n个对象,构造函数调用n次。
Solution* solu = new Solution[n];
return getSum();
}
Solution() {
N++;
sum += N;
}
int getSum() {
return sum;
}
void reset() {
N = 0;
sum = 0;
}
private:
static int N;
static int sum;
};
int Solution::N = 0;
int Solution::sum = 0;