求1+2+...+n
本来这个题目没有可说的,但却要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C),那么一般的方法,或者递归之类的解法都不行,因为不是要用么循环就是要用到if.
首先,想到用math函数来做,除法可以通过右移来实现,(n*n+n)/2,平方可以用pow(n,2)
另一种方法可以通过类来实现,只要定义两个静态成员变量,每次构造一个对像的时候,构造函数将两变量进行运算,最终得到想要的解
#include<iostream> #include<cmath> int Sum(int n); class SumClass{ private: static int m_num; //不能在这里初始化 static int m_sum; public: SumClass() {m_num++;m_sum+=m_num;} static void Reset(){m_sum=0;m_num=0;} static int Res() {return m_sum;}; }; //静态成员变量的初始化 int SumClass::m_num=0; int SumClass::m_sum=0; using namespace std; int main() { int n; cout<<"Input the upper bond:"; cin>>n; cout<<"the sum is:"<<Sum(n)<<endl; //****************************use the class SumClass *sum=new SumClass[n]; cout<<"use the class:"<<SumClass::Res()<<endl; return 0; } int Sum(int n) { n+=pow(n,2); return (n>>1); }