题目描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路:
递归,利用与逻辑,加到0递归终止
class Solution {
public:
int Sum_Solution(int n)
{
int ans = n;
// &&就是逻辑与,逻辑与有个短路特点,前面为假,后面不计算。即递归终止条件
ans && (ans += Sum_Solution(n - 1));
return ans;
}
};
这里用&会出现错误,内存超限。
&和&&的区别
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。
&还可以用作按位与的运算符,两个表达式的值按二进制位展开,对应的位(bit)按值进行“与”运算,结果保留在该位上
&、&&和|、||的区别:
https://www.jianshu.com/p/01c834890b6a