题目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题思路
累加不能用循环的话,那就试试递归吧。判断递归的终止条件不能用 if 和 switch,那就用短路与代替。
(n > 0) && (sum += Sum_Solution(n-1))>0只有满足n > 0的条件,&&后面的表达式才会执行。
代码实现
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
public class numberSum {
//求1+2+3+...+n的和
// (不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C))
public int sumSolution(int n){
int sum=n;
boolean t=(n>0)&&(sum+=sumSolution(n-1))>0;
return sum;
}
public static void main(String[] args) {
numberSum test=new numberSum();
int sum=test.sumSolution(20);
System.out.println(sum);
}
}
总结
本题来源于面试经典教材《剑指offer》中 归属于其他类型题目。
同许多在算法道路上不断前行的人一样,不断练习,修炼自己!
如有博客中存在的疑问或者建议,可以在下方留言一起交流,感谢各位!
最后,感谢AIAS!
觉得本博客有用的客官,可以给个赞鼓励下! 嘿嘿