题目简介:
求 1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
示例 1:
1 | 输入: n = 3 |
示例 2:
1 | 输入: n = 9 |
限制:
1 <= n <= 10000
思路:
不能使用for
,就想到用递归,但是需要判断递归结束的标志,也就是n —> n - 1 -> ... -> 0
,n
到达0
时需要退出递归。所以可以使用逻辑运算符&&
的短路性质。
即对于 A && B
这个表达式,如果 A 表达式返回 False
,那么 A && B
已经确定为 False
,此时不会去执行表达式 B。
n && (n += sumNums(n - 1))
,当n == 0
时,便不会去执行后面的部分。所以就相当于停止了递归。
代码如下:
1 | class Solution { |