题解 | #求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