题目
求 1+2+...+n
,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
思路
使用逻辑与运算进行累加求和。
and的用法:从左到右扫描,返回第一个为假的表达式值,无假值则返回最后一个表达式值。
or的用法:从左到右扫描,返回第一个为真的表达式值,无真值则返回最后一个表达式值。
代码
clclass Solution:
def sumNums(self, n: int) -> int:
return n and (n + self.sumNums(n-1)) # 从左往右返回第一个为False的表达式;无,则返回最后一个表达式