实现1+2+3...+n的不同解法

来源:互联网 发布:数据库完整性约束 编辑:程序博客网 时间:2024/06/06 02:12

实现1+2+3…+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。
方法一:使用构造函数。
在构造函数中对静态成员变量++,创建n个对象,就能++n次。

class Sum{public:    Sum()    {        n++;        sum += n;    }    static int GetSum()    {        return sum;    }private:    static int sum;    static int n;};int Sum::sum = 0;int Sum::n = 0;void SumFun(){    Sum* s = new Sum[100];    delete[] s;    s = NULL;    cout<<"sum = "<<Sum::GetSum()<<endl;}

方法二:利用虚函数
使用虚函数,定义数组,当数组下标为0时,调用基类,数组下标不为0时,递归相加。

class Base;Base* arr[2];class Base{public:    virtual int sum(int n)    {        return 0;    }};class Sum:public Base{public:    virtual int sum(int n)    {        return arr[!!n]->sum(n-1)+n;    }};void SumFun(){    Base b;    Sum s;    arr[0] = &b;    arr[1] = &s;    cout<<"sum = "<<arr[1]->sum(100)<<endl;}