题解 | #求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)
关键点:
- 循环用递归实现
- if用列表实现
- 由于列表不能变长(变长意味着要for),所以只能是每个元素处理一定范围内的情况,这里第一个元素处理0,第二个元素处理非0


查看29道真题和解析