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;
}