题解 | #求1+2+3+...+n#

求1+2+3+...+n

https://www.nowcoder.com/practice/7a0da8fc483247ff8800059e12d7caf1

# -*- coding:utf-8 -*-
class Solution:
    def Sum_Solution(self, n):
        # write code here
        self.a = [self.fun0, self.fun1]  # 定义一个2元素列表,每个元素都是一个函数
        return self.fun1(n)

    def fun0(self, x):  # 第一个函数专门用于处理0
        return 0

    def fun1(self, x):  # 第二个函数处理非0
        return x+self.a[self.zero_one(x-1)](x-1)  # 根据下一个元素是否为0决定递归到列表中的哪一个函数

    def zero_one(self, n):  # 把除0以外的整数映射为1,0映射为0
        return n*10//(n*10-1)

关键点:

  1. 循环用递归实现
  2. if用列表实现
  3. 由于列表不能变长(变长意味着要for),所以只能是每个元素处理一定范围内的情况,这里第一个元素处理0,第二个元素处理非0
全部评论

相关推荐

11-04 14:10
东南大学 Java
_可乐多加冰_:去市公司包卖卡的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务