码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer (46) 求1+2+3+...+n

时间:2014-07-10 11:33:22      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   for   代码   

题目:求1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句

 

题解分析:

不能使用乘除法,也就不能使用 n(n+1)/ 2公式了

不能使用for while 也就不能使用循环之类的

 

利用构造函数求解:

循环只是让相同代码重复执行n遍,我们可以定义一个类型,然后创建n个该类型的实例,这时类的构造函数一定会重复执行n次

我们在类的构造函数中进行n次累加

注意:参与累加的成员变量应为static,因为是每个类独属一份,而不是每个实例

class Temp {
    public:
        Temp() {
            sum += i;
            ++i;
        }

        static int GetSum() {
            return sum;
        }

    private:
        static int sum;
        static int i;
};

int Temp::sum = 0;
int Temp::i = 1;

int Sum(int n) {
    Temp* a = new Temp[n];
    int result = Temp::GetSum();
    delete []a;
    a = NULL;
    return result;
}

 

剑指offer (46) 求1+2+3+...+n,布布扣,bubuko.com

剑指offer (46) 求1+2+3+...+n

标签:style   blog   color   使用   for   代码   

原文地址:http://www.cnblogs.com/wwwjieo0/p/3812140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!