求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;
}
}
本文介绍了一种不使用常规循环和条件语句求1到n的和的方法,利用Java的短路特性进行递归调用,巧妙地避免了使用if等关键字,实现了对数列求和的功能。

被折叠的 条评论
为什么被折叠?



