求 1 + 2 + . . . + n 1+2+...+n 1+2+...+n
题目
求 1 + 2 + . . . + n 1+2+...+n 1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路 利用逻辑短路
逻辑运算符的短路效应终止递归,只有当 n > 1 n>1 n>1时才会执行&&\and后面的语句
C++
class Solution {
public:
int sumNums(int n) {
int res = n;
n>1 && (res += sumNums(n-1));
return res;
}
};
python
class Solution:
def sumNums(self, n: int) -> int:
self.res = 0
n > 1 and self.sumNums(n-1)
self.res += n
return self.res