那天,同學的老師出了道題目,讓我們做,不用遞歸和循環求1~100的和?
自己寫了個代碼今天發出來,看看大家有沒有其他的好方法啊!希望有好方法的留言交流下,,,
代碼如下:
//不用循環和遞歸求和!(C++/VC++6.0)
#include<iostream>
using namespace std;
class calculate
{
public:
calculate();
int getsum();
static int N;
static int SUM;
};
int calculate::N=0;
int calculate::SUM=0;
calculate::calculate()
{
N++; www.2cto.com
SUM+=N;
}
int calculate::getsum()
{
returnSUM;
}
void main()
{
intmax,min;
cout<<"輸入你想求和的范圍:"<<endl;
cout<<"輸入最小數(min>0):"<<endl;
cin>>min;
while(min<0){ //min輸入不合法,提示重新輸入;
cout<<"輸入最小數(min>0)不合法,重新輸入:"<<endl;
cin>>min;
}
cout<<"輸入最大數(max>0且max>=min):"<<endl;
cin>>max;
while(max<0||max<min){ //max輸入不合法,提示重新輸入;
cout<<"輸入最大數(max>0&&max>=min)不合法,重新輸入:"<<endl;
cin>>max;
}
calculate::N=(min-1);
calculate *p=new calculate[max-min+1];
cout<<min<<"~"<<max<<"的和是:"<<p->getsum()<<endl;
delete[] p;
}
這個方法是利用了析構函數的默認構造函數的調用和靜態數據成員的特性來實現的,其實這裡的自動的重復調用析構函數還可以用那個不用new而選用C++容器,只要容器裡面包含的是對象就可以了,如vector等,因為當容器裡面包含的是類對象的時候,當你定義了多少個元素,就也會自動的調用析構函數初始化對象!
不知道大家有什麼其他的好方法沒,留言交流下啊,(僅限用C/C++實現!)
摘自 wudemiao的專欄