题目:求1+2+3+,,,+n,要求不能使用循环,只能使用虚函数。
思路:把数值变量n转换为bool值。如果对n连续做两次反运算,即!!n,那么非零元素转换为true,零元素转换为false。当值为1的时候调用一个函数,当值为0的时候调用另一个函数。
class A;
A* Array[2];
class A
{
public:
virtual unsigned int Sum (unsigned int n)
{
return 0;
}
};
class B: public A
{
public:
virtual unsigned int Sum (unsigned int n)
{
return Array[!!n]->Sum(n-1) + n;
}
};
int Sum_Solution2(int n)
{
A a;
B b;
Array[0] = &a;
Array[1] = &b;
int value = Array[1]->Sum(n);
return value;
}