题目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路
短路&&特性:
首先要看看我们可以使用那些运算符进行解决问题
单目运算符:++,–
双目运算符:+,-
移位运算符:<<,>>
关系运算符:>,<
逻辑运算符:|| , &&
解:首先单目和双目都一样,位移运算也不能够解决我们的问题(移位运算一般都是解决规律性的问题)
而关系运算需要与if等条件语句进行配合使用,看来手里能用的牌也就剩逻辑运算符了
引用(可以查看运算符的优先级):https://blog.csdn.net/qq_35038153/article/details/78191381
具体实现如下图所示
具体实现代码如下
// 利用&&的特性
public class Solution {
public int Sum_Solution(int n) {
int sum = n;
boolean ans = (n>0)&&((sum+=Sum_Solution(n-1))>0);
return sum;
}
}
NowCoder(Online Coding, Please Click)