题目
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
分析
不能使用乘除也还好,可以用加减,效果一样的。但是不能使用循环和判断就比较蛋疼了。
要解决这个题必须要使用判断语句,不然根本不知道从哪里跳出,位移运算,也找不到规律,在运算符中,还能做判断的也就是”或” 还有 &&
这两个运算符都可以短路,”或” 前半段为真,就短路
&& 前半段为假短路。
而本题中是从1-n,这是我们的区间,只要判断当前的数是不是在这个区间,并且用+或者-,进行移位。
综上,代码如下;
代码
public class Solution {
public int Sum_Solution(int n) {
int sum = n;
boolean valid = (n>0)&&((sum+= Sum_Solution(n - 1) )>0);
return sum;
}
}