&&短路评估实战——限定条件下的加和(出自剑指offer)
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
首先,我们要了解文章标题中的短路评估的含义:
在一个A&&B的判断中,如果前者的布尔值为false,那么则会跳过对B的判断。
PS.暂时找不到官方的文字。
我们可以用&&的这个特性来完成本该由if语句完成的功能。
class Solution {
public:
int Sum_Solution(int n);
};
int Solution::Sum_Solution(int n) {
bool b = n > 1 && (n += Sum_Solution(n - 1));
return n;
}
共有 0 条评论