题目描述
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
解题思路
方法一:短路求值
1、思路:递归求解1+2+3+...+n,用短路求值的方法代替if条件语句终止递归。短路求值原理:
expressionA && expressionB,若expressionA为false,则整个表达式为false,不再计算expressionB;expressionA || expressionB,若expressionA为true,则整个表达式为true,不再计算expressionB。
2、代码:
class Solution {
public:
int Sum_Solution(int n) {
n > 1 && (n += Sum_Solution(n - 1));
return n;
}
};
3、复杂度:
时间复杂度:O(n);
空间复杂度:O(n)。