1+2+3+...+を計算する方法nの値


関数配列の使用
再帰は使用できませんが、2つの関数の配列を使用して、nから0に従って基準関数を選択し、他の場合は下降関数を呼び出すことを選択できます.
//          ,              
//          , 0      , 0      
typedef  int (*fun) ( int); //        
class Solution {
public:
    static int Sum_Solution(int n) {
        static fun f[]={teminator,Sum_Solution};    //         ,        ,           。
        return n+f[!!n](n-1);
    }

    static int teminator(unsigned int n){
        return 0;
    }
};

コンストラクタの使用
コンストラクション関数は毎回加算され、newのn次元配列はn回、nに加算されます.
//        ,new     ,            ,         
class A{
public:
    A(){n++;sum=sum+n;}
    static int n;
    static int sum;
    static reset(){n=0;sum=0;}
};
int A::n=0;     // const static         ,const static            
int A::sum=0;
class Solution {
public:
    int Sum_Solution(int fre) {
        A::reset();
        A* a=new A[fre];
        int sum=A::sum;
        delete [] a;
        return sum;
    }
};