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

时间:2021-11-03 05:37:54

方法1:利用静态变量和构造函数。时间复杂度为O(1)
调用构造方法n次,便可达到求1~n的和。因为静态全局变量只有一个作用于一个源文件中,所以只会创建一个。

//方法1:利用静态变量和构造函数
class Sum
{

public:
Sum()
{
++i;
sum=i+sum;
}
static int GetSum()
{
return sum;
}
private:
static int i;
static int sum;
};
int Sum::i=0;//静态变量需要类外定义
int Sum::sum=0;
int main()
{
int n;
cout<<"请输入N的值:";
cin>>n;
Sum* s=new Sum[n];//创建n个Sum对象,间接实现1~n的和
cout<<"1到"<<n<<"的和为:"<<Sum::GetSum()<<endl;
return 0;
}

方法2:利用递归,

int sum(int n)
{
if(n==1)
return 1;
return n+sum(n-1);
}