1.题目
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
2.分析
剑指offer上有使用构造函数来求解的方法,很难想到。
还有一种比较巧妙的解法。
利用逻辑与,A && B,如果A为false,则不会判断B。这一特性可以用来结束递归。
3.代码
n>0时, 计算 sum+=getSum(n-1)
n=0时,不满足n>0,&&后面的表达式不会执行,结束递归,return sum
int getSum(int n) {
int sum = n;
bool flag = (n > 0) && ((sum += getSum(n - 1)) > 0);
return sum;
}