求1+2+…+n

12.题目:求1+2+…+n,

要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。

#include 
#include 
#include 
using namespace std;

int nFactorial(int n)
{
    int num = 0;
    (n > 0) && (num = n + nFactorial(n - 1));
    return num;
}
int main()
{
    cout << nFactorial(100) << endl;
    system("pause");
    return 0;
}

#include 
#include 
#include 
using namespace std;

class A;
A* Array[2];

class A
{
public:
    virtual int Sum (int n) { return 0; }
};

class B: public A
{
public:
    virtual int Sum (int n) { return Array[!!n]->Sum(n-1)+n; }
};

int solution2_Sum(int n)
{
    A a;
    B b;
    Array[0] = &a;
    Array[1] = &b;

    int value = Array[1]->Sum(n);
    //利用虚函数的特性,当Array[1]为0时,即Array[0] = &a; 执行A::Sum,
    //当Array[1]不为0时,即Array[1] = &b; 执行B::Sum。

    return value;
}

int main()
{
    cout<

你可能感兴趣的:(C++)