求1+2+3…+n
题目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路分析
解法一:由公式得,1+2+3+…+n=(1+n)*n/2=(n^2+n)/2.则可以通过位运算实现,即(Math.pow(n,2)+n)>>1。代码如下:
public int Sum_Solution(int n) {
return (int)(Math.pow(n,2)+n)>>1;
}
解法二:利用逻辑与的短路特性实现递归终止。代码如下:
public int Sum_Solution(int n) {
int sum=n;
boolean flag=(n>0)&&(sum+=Sum_Solution(n-1))>0;
return sum;
}