剑指offer 64. 求1+2+3+...+n

题目:求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 

方法:递归 逻辑运算符  时间复杂度O(n)  空间复杂度O(n) 

题干不允许使用for、while、乘除法,故通项公式和迭代无法使用,使用递归可以解决上述问题,但递归需要出口判断条件,使用逻辑运算符的短路效应来实现;

如 A and B,如果表达式A为False,则不会处理表达式B,判断终止,故可将A设定为终止条件,B设置为向下递归

class Solution(object):
    def __init__(self):
        self.sum = 0
    def sumNums(self, n):
        """
        :type n: int
        :rtype: int
        """
        n > 1 and self.sumNums(n - 1)
        self.sum += n
        return self.sum

 

posted @ 2022-07-23 15:53  Liang-ml  阅读(20)  评论(0)    收藏  举报