剑指 Offer 64. 求1+2+…+n 短路运算符的妙用

剑指 Offer 64. 求1+2+…+n

 

var sumNums = function(n) {
    return n && n + sumNums(n-1);
};

 

考查了逻辑运算符的短路性质。

以逻辑运算符 && 为例,对于 A && B 这个表达式,如果 A 表达式返回 false ,那么 A && B 已经确定为 false ,此时不会去执行表达式 B。同理,对于逻辑运算符 ||, 对于 A || B 这个表达式,如果 A 表达式返回 true ,那么 A || B 已经确定为 true ,此时不会去执行表达式 B。

利用这一特性,我们可以将判断是否为递归的出口看作 A && B 表达式中的 A 部分,递归的主体函数看作 B 部分。如果不是递归出口,则返回 true,并继续执行表达式 B 的部分,否则递归结束。

 

posted @ 2021-09-26 15:18  jerryfish  阅读(28)  评论(0编辑  收藏  举报