题目描述
求 1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路
1.递归 (会使用if判断)
博主太菜了,之前从没刷过算法题,现在写个简单的递归都费劲,看了别人的设计才自己写出来。看到这道题第一个想到的方法就是递归,虽然破坏了题干中的限制,但是想到了这个方法就记录一下吧。
class Solution(object):
def sumNums(self, n):
if n == 1:
return 1
n += self.sumNums(n-1)
return n
2.短路效应
这个是我在lc上看到的解法,是我第一次接触,思路很妙。
class Solution(object):
def __init__(self):
self.rec = 0
def sumNums(self, n):
n > 1 and self.sumNums(n-1) # 短路效应体现在这里,当n>1为True时,才会运行后面的sumNums,否则直接下一步
self.rec += n
return self.rec
可能还有别的方法,但我时间紧迫没看那么多,等二刷三刷的时候再看更多思路吧。