题目

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

image.png

思路

使用逻辑与运算进行累加求和。

and的用法:从左到右扫描,返回第一个为假的表达式值,无假值则返回最后一个表达式值。
or的用法:从左到右扫描,返回第一个为真的表达式值,无真值则返回最后一个表达式值。

代码

  1. clclass Solution:
  2. def sumNums(self, n: int) -> int:
  3. return n and (n + self.sumNums(n-1)) # 从左往右返回第一个为False的表达式;无,则返回最后一个表达式