剑指 Offer 64. 求1+2+…+n(逻辑运算构造递归条件)

  • 题目描述
求 1+2+...+n ,要求不能使用乘除法、forwhileifelse、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

参考:https://leetcode-cn.com/problems/qiu-12n-lcof/solution/mian-shi-ti-64-qiu-1-2-nluo-ji-fu-duan-lu-qing-xi-/

原文地址:https://www.cnblogs.com/yeshengCqupt/p/13591646.html