解题 1-2+3-4+……+m
题目:求以下表达式的值, 1-2+3-4+……+m
一接触此题目我第一想法就是通过循环来实现,为方便测试使用javaScript语言来编写
如代码:
function foo1(v) { var sum=0; for(var i=0;i<v+1;i++) { if(i%2>0) { sum+=i; } else { sum-=i; } } return sum; }
后面想想找一下数学规律,完全可以通过一个公式来计算的,
[
当为奇数时:值等正数,即为m/2+1的值
当为偶数时:值为负数,即为m/2*-1
]代码如下:
function foo1(v) { var sum=0; if(v%2>0) { sum=Math.ceil(v/2); //取整 } else { sum=v/2*-1; } return sum; }
以前学的数学知识差不多都忘了,搞个东西总想使用递归或循环来实现算法,却从来都没有想到找规律,寻找公式,以后还是要好好学习数学啊,