由于题目比较严格,不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句,我们运用逻辑运算符的短路效应来完成该题。具体如下所示。
if(A && B) // 若 A 为 false ,则 B 的判断不会执行(即短路),直接判定 A && B 为 false
if(A || B) // 若 A 为 true ,则 B 的判断不会执行(即短路),直接判定 A || B 为 true
因此我们可以使用
n > 1 && sumNums(n - 1) // 当 n = 1 时 n > 1 不成立 ,此时 “短路” ,终止后续递归
来实现对递归的控制。具体实现如下所示,这个算法的时间复杂度是O(N),因为递归深度达到了N所以空间复杂度是O(N)。
class Solution:
def __init__(self):
self.res = 0
def sumNums(self, n: int) -> int:
n > 1 and self.sumNums(n-1)
self.res += n
return self.res
PREVIOUSjz062.圆圈中最后剩下的数字
NEXTjz065.不用加减乘除做加法