C/C++--巧妙的不用递归和循环实现任意数之间的求和

上一篇 / 下一篇  2012-03-30 09:43:33 / 个人分类:C++

那天,同学的老师出了道题目,让我们做,不用递归和循环求1~100的和? 51Testing软件测试网^8Z7N |zh

  自己写了个代码今天发出来,看看大家有没有其他的好方法啊!希望有好方法的留言交流下,,,

.WP+^ E$n&TF9L-C4f0

?svHZ,g,V!ls0  代码如下:51Testing软件测试网X }/Z+L&kF

)GixYI.h'L0

4^$[5`vV6Oy\0
//不用循环和递归求和!(C++/VC++6.0)
L%Z3d!sG*Q0#include<iostream>
wl4AG;\'s3t:~WP6}0using namespace std;
$]8v4|HtK!v0class calculate51Testing软件测试网PU]y oc d
{51Testing软件测试网`2SH]8I\v8H/N/~
public:
Da,y Ed!AQaW#[0   calculate();
(?1M)Q@Eu["EP0   int getsum();
w&{5}f!Q6HV0   static int N;51Testing软件测试网? Z%w4aA:b O/B9`
   static int SUM;51Testing软件测试网/kM.kf Fq.maSs2i
};
}a&w8}6zh8f/B!` B?0int calculate::N=0;
sPpw}8SJ S'f}^ n R0int calculate::SUM=0;51Testing软件测试网g8nf^/Ur
 51Testing软件测试网T%?p"vz
calculate::calculate()
Nk5D]5G,O0[0{51Testing软件测试网uy5XyK o3B'`
   N++;51Testing软件测试网9Gr EQMi:]h&r
   SUM+=N;
gV$Es |?9U%e0}51Testing软件测试网.F4Bp]f9H&b
 51Testing软件测试网"Cm9ya3o%vP
int calculate::getsum()51Testing软件测试网'e0TvU t2Ss
{
&v2f+UQ T0L ZQp0       returnSUM;
X3{1eJ%]K0}
Q EN~'A0 
i4t[ GBvY0void main()
1T5a,RF5HrzT$h0{
zwH J cR!N0       intmax,min;51Testing软件测试网n.J{ q0U7?m lq!O
       cout<<"输入你想求和的范围:"<<endl;
:u\?M/[)iH,C9[0       cout<<"输入最小数(min>0):"<<endl;
|hGsl SC0       cin>>min;51Testing软件测试网8ilP:@v2@'E$y P pD
       while(min<0){                              //min输入不合法,提示重新输入;51Testing软件测试网0SAX&F x(h*G/I:k+P
              cout<<"输入最小数(min>0)不合法,重新输入:"<<endl;
l}4ol^#[&V1H;}0       cin>>min;
W-F0va!xx2j-AD3P Q0       }
P6B/^H/~UU,b0       cout<<"输入最大数(max>0且max>=min):"<<endl;51Testing软件测试网a{^3gIX
       cin>>max;51Testing软件测试网.px4Z$dq
       while(max<0||max<min){                    //max输入不合法,提示重新输入;51Testing软件测试网O3?0s:Y L4H Cl*t
              cout<<"输入最大数(max>0&&max>=min)不合法,重新输入:"<<endl;
G HKX2D|n}0       cin>>max;
p2gR8K4[0       }51Testing软件测试网Z;~8[dDo
 51Testing软件测试网&|/Yf5N _3i-T6O
       calculate::N=(min-1);51Testing软件测试网2K2i#K7Hh!d j_LL+_
       calculate *p=new calculate[max-min+1];
v ~\K Gd {A0       cout<<min<<"~"<<max<<"的和是:"<<p->getsum()<<endl;51Testing软件测试网5Ea#hs1@Q@
       delete[] p;51Testing软件测试网l,X ] [*e d9u
 
)q;{S[qqAp0}
51Testing软件测试网ZZ*_mf}J

7r1a$wC!L%S9y A_9t0 51Testing软件测试网 [B7b}1p1C!u

  这个方法是利用了析构函数的默认构造函数的调用和静态数据成员的特性来实现的,其实这里的自动的重复调用析构函数还可以用那个不用new而选用C++容器,只要容器里面包含的是对象就可以了,如vector等,因为当容器里面包含的是类对象的时候,当你定义了多少个元素,就也会自动的调用析构函数初始化对象!

"a#CN;Z xn7J,P |0 51Testing软件测试网`A v1pAG q

  不知道大家有什么其他的好方法没,留言交流下啊,(仅限用C/C++实现!)

0cUs;W B Mc0

TAG:

 

评分:0

我来说两句

Open Toolbar