问题描述
用C#编写一个方法,计算:1-2+3-4+5-6+7-8+9-10+11-……N,能详细点更好!
解决方案
解决方案二:
1+(3-2)+(5-4)+............
解决方案三:
privateintGetResult(intn){intresult=0;for(inti=1;i<=n;i++){if(i%2==0&&i>1)result-=i;elsereuslt+=i;}returnresult;}
解决方案四:
英雄。。。这个好象很简单的啊。。(1-2)+(3-4)+(5-6)+(7-8)+(9-10)不就是一个递归吗?懒得写算法了。。
解决方案五:
还有一个比较重要的。。根本不需要算法。其中每一项结果都是-1,那么结果就是:1、N是偶数=N/2*(-1);2、结果是奇数=(N-1)/2*(-1)+N。。。。。。。。。。。。。。。。。。。。。。。。。
解决方案六:
第一种,将两项看做一项(1-2)+(3-4)+(5-6)+(7-8)+(9-10)算法如下:publicintGetSum(intn){intsum=0;intmod=n/2;sum=mod*(-1);if(n%2!=0)sum+=n;returnsum;}
第二种,是偶数的话乘以(-1)算法如下:publicintGetSum(intn){intsum=0;for(inti=1;i<=n;i++){if(i%2!=0)sum+=i;elsesum+=i*(-1);}returnsum;}
解决方案七:
以上是最简单的两种算法
解决方案八:
publicintGetValue(intn){intsum=0;intmod=n/2;if(mod(n/2)>0&&n>1){return-1*n/2}else{return-1*n/2+n;}}
解决方案九:
引用2楼ojlovecd的回复:
C#codeprivateintGetResult(intn){intresult=0;for(inti=1;i<=n;i++){if(i%2==0)result-=i;elsereuslt+=i;}returnresult;}
这样就好了