剑指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

浙公网安备 33010602011771号