jz064.求1+2+...+n

 

题目链接

由于题目比较严格,不能使用乘除法、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