求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
这个题一看就是递归的做法
public class Solution {
public int Sum_Solution(int n) {
return n+Sum_Solution(n-1);
}
}
但是不能使用if,也就是说单纯的递归不能找到结束条件,所以这里引入新的方法
短路特性
把代码进行改写
//注 java不能自动转boolean
public class Solution {
public int Sum_Solution(int n) {
int ans = n;
boolean t = (ans!=1)&& ((ans = ans +Sum_Solution(n-1))!=0);
return ans;
}
}