剑指 Offer 64. 求1+2+…+n(逻辑运算构造递归条件)
- 题目描述
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 输入: n = 3 输出: 6 示例 2: 输入: n = 9 输出: 45
- 解析
这道题不能用循环也不能用乘除法,那想想还有什么能代替循环和乘除法的,那不就是递归和位运算了吗?
用递归来实现加法,用n>1判断是否要递归的条件,真是妙啊!
class Solution: def __init__(self): self.res = 0 def sumNums(self, n: int) -> int: n > 1 and self.sumNums(n-1) self.res += n return self.res