您的位置:首页 > Web前端

【剑指offer-解题系列(48)】求1+2+3+...+n

2017-06-08 16:10 211 查看


题目描述

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

此题目目的是为了考采用取巧的方法,总共可以使用三种方法: 虚函数,
代码实现



class MyClass{

public:

    MyClass(){

       sum += n;

       n++;

    }

    static void init(){

        sum = 0;

        n = 1;

    }

    static int getNum(){

        return sum;

    }

private:

    static int sum;

    static int n;

};

int MyClass::sum = 0;

int MyClass::n = 1;

class Base{

public:

    Base(){ 

    }

    virtual int add(){

        

    }

private: 

}; 

class Derive:Base{

public:

    Derive(){ 

    }

    virtual int  

private: 

}; 

//////////////////////////////////

class Solution {

public:

    ///////////////构造函数版本

    int Sum_Solution1(int n) {

        MyClass::init();

        MyClass*h = new MyClass
;

        int res =  h[0].getNum(); 

        return res;

    }

    

    ///////////////中断条件版本

    int Sum_Solution2(int n) {  

        int res = n;

        res && (res+=Sum_Solution(n-1));

        return res;

    }

    

    ///////////////虚函数版本

    int Sum_Solution3(int n) {  

        int res = n;

        res && (res+=Sum_Solution(n-1));

        return res;

    }

};

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: