题目:求1+2+........+n
要求不能使用乘除法、for、while、if、else、switch、case、等关键字以及其条件判断语句(A?B:C)
这题确实好难,吃饭的时候想了半天没有想出来,还是在网上找的答案。也写出来给大家共享一下了。
这题的关键是如何控制循环条件。在下面的第一种方法,是使用静态变量,通过new一个数组的大小来控制循环的停止。
而第二种方法是真正的高手啊,使用逻辑符&& 通过c的语法规则进行条件判断,利用函数递归来控制n的大小。厉害~~
第一种:
#include <iostream>
using namespace std;
class SumN
{
public:
SumN()
{
++n;
sum+=n;
}
void sumN();
private:
static int n;
static int sum;
};
void SumN::sumN()
{
cout << sum<<endl;
}
int SumN::n = 0;
int SumN::sum = 0;
void main()
{
SumN *pSum = new SumN[100];
pSum -> sumN();
delete pSum;
system("pause");
}
第二种:
#include <iostream>
using namespace std;
int sumN(int n)
{
int sum = 0;
(n)&&(sum = n + sumN(n-1));
return sum;
}
void main()
{
cout << sumN(100) <<endl;
system("pause");
}