题解 | #求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
全部评论

相关推荐

04-29 18:07
常州大学 Java
寂静羽翼:兄弟我已经亲身经历了,双非没实习很多大厂还是会给笔试的,可是有的公司笔试做的好也不给面一直卡着,ssob基本看我没实习都拒绝我了,但是每天投满偶尔也能有一两场初创公司的面试,但是薪资基本在五六千
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务