剑指offer - 求1+2+3+...+n - python

188 阅读1分钟

题目描述:

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

思路:

  • 递归调用:不断的和前一个数相加,直到 n n n减为1
  • list法:首先生成包含 0 ∼ n 0 \sim n 0∼n的list,然后使用sum()求和即可

AC代码

递归调用

# -*- coding:utf-8 -*-
class Solution:
    def Sum_Solution(self, n):
        if n == 1:
            return 1
        return n + self.Sum_Solution(n-1)

list法

# -*- coding:utf-8 -*-
class Solution:
    def Sum_Solution(self, n):
        numbers = [ _ for _ in range(n + 1)]
        return sum(numbers)