剑指offer46 求1+2+...+n 以及& &&区别

参考代码:

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时,就停止了递归,相当于递归的结束条件。

posted @ 2017-07-26 17:12  有梦就要去实现他  阅读(251)  评论(0编辑  收藏  举报