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

实现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 = "<

方法二:利用虚函数
使用虚函数,定义数组,当数组下标为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 = "<1]->sum(100)<

你可能感兴趣的:(刷题)