剑指offer 面试题64 求1+2+3+...+n

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

tips: 使用构造函数,保留类的静态变量存储sum值。

class Temp {
     
private:
    static int sum;
    static int n;
public:
    Temp() {
     
        ++n;
        sum+=n;
    }
    static void Reset() {
     
        n=0;
        sum=0;
    }
    static int getSum() {
     
        return sum;
    }
};

int Temp::n=0;
int Temp::sum=0;

class Solution {
     
public:
    int Sum_Solution(int n) {
     
        // n-=1;
        Temp::Reset();
        
        Temp* a=new Temp[n];
        delete []a;
        a=NULL;
        return Temp::getSum();
    }
};

tips: 利用逻辑与(&&)的短路求值原理作为终止条件。

class Solution {
     
public:
    int Sum_Solution(int n) {
     
        int ans = n;
        ans && (ans += Sum_Solution(n - 1));
        return ans;
    }
};

你可能感兴趣的:(剑指offer,剑指offer,c++)