要求不能使用乘除法、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;
}