求1+2+…+n

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

要求不能使用乘除法、for、while、if、else、switch、case等關鍵字以及條件判斷語句(A?B:C)。

#include <iostream>
#include <stdio.h>
#include <cstdlib>
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 <iostream>
#include <stdio.h>
#include <cstdlib>
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<<solution2_Sum(100)<<endl;
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章