题目
- 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
思路
- 常规方法计算之和是n(n+1)/2,所以使用的也就是循环或者递归方法,就会用到for、while等条件、循环判断语句
- 所以使用的方法是逻辑运算符你&& ||
- 本方法使用的是&&逻辑运算符,使用的特性就是短路特性。
- &&短路特性:条件1 && 条件2 条件1和2只有同时为true时,结果才为true,如果条件1为false,那么结果直接为false,不用判断条件2结果,这种判断方法称为短路
代码
public class Solution {
public int Sum_Solution(int n) {
int sum = n;
//当sum=0,意味着n个数循环相加结束,跳出递归条件,直接return sum;
boolean flag = (sum>0)&&((sum+=Sum_Solution(--n))>0);
return sum;
}
}
牛客代码:
- 思路:使用递归的方法,递归的结束条件使用的是异常处理,当出现sum(0)时会捕捉异常,直接返回0
- 当没有出现异常的时候,sum(n)=n+sum(n-1)循环相加,直到sum(0)出现
public class Solution {
public int Sum_Solution(int n) {
return sum(n);
}
int sum(int n){
try{
int i = 1%n;
return n+sum(n-1);
}
catch(Exception e){
return 0;
}
}
}