参考代码:
class Solution { public: int Sum_Solution(int n) { int result = n; result && (result += Sum_Solution(n-1)); return result; } };
&:位与运算符
&&:逻辑运算符
&返回的是二进制位与运算后的二进制值,&&返回的是true或者false。对于&&,还有一个短路求值原则,即先计算&&前的值,再计算&&后的值。若&&前面为false,在&&后的方程式就不用计算了。
这个代码中,result && (result += Sum_Solution(n-1))不是将前后两个进行位与运算,而是进行逻辑与运算,只是最后返回的true、false没有利用。若&&前的result为真,就可以计算后面的值,并对result值进行了
相应的更新。当result递归到0时,就停止了递归,相当于递归的结束条件。