剑指Offer——求1+2+3...+n

1. Question

求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。

2. Solution

  1. 利用构造函数求解

    可以用构造函数求解,每次创建一个对象的时候都会去调用一次构造函数,那么我们就把静态变量的值加1.

  2. 虚函数求解

  3. 函数指针求解

  4. 模板求解

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;
原文地址:https://www.cnblogs.com/zhonghuasong/p/7090714.html