实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字

时间:2022-12-25 05:38:02
//2.【附加题】--实现1+2+3...+n;
//要求不能使用乘除法、for、while、if、else、switch、case 等关键字;
//(这个题有多种解法,大家可以尽量去思考,这个题最优的解法时间复杂度是O(1),大家可以去尝试实现)


#include<iostream>
using namespace std;


----------


//方法一:使用条件判断语句(三目运算符 ?:)
int fun(int n)//n为相加的最后一个数
{
return n>0? (fun(n-1)+n):0 ;
}


----------


//方法二:利用new运算符开辟空间时,调用构造函数;静态成员为类的每个成员所共有;
class Sum
{
public:
Sum()//1.非静态成员函数内可以使用静态成员变量,调用静态成员函数
{
_n++;
_sum+=_n;
}
static int sum()
{
return _sum;
}
private:
int c;
static int _n;
static int _sum;
};
//2.类的静态成员必须要在类外进行初始化 [类型 类名::变量名=初始值]
int Sum::_n=0;
int Sum::_sum=0;

int main()
{
Sum* s=new Sum[100];
cout<<Sum::sum()<<endl;
delete[] s;
return 0;
}

复习类的静态成员:
(1)静态成员函数内部不能使用非静态成员函数和非静态成员变量
(2)非静态成员函数内可以使用静态成员变量,调用静态成员函数
(3)类的静态成员变量必须要在类外进行初始化 [类型 类名::变量名=初始值]
(4)累得静态成员被该类的所有对象所共享;

  • 静态成员变量放在常量区(也叫静态区,数据段);
  • 静态成员函数放在代码段;