这是我在求职面试中被问到的一个问题。
问题是如何将所有自然数之和在1到100之间,我还要求用python编写这个程序。
这就是我写的代码:
def sumNaturalNumbers(start, end, total_sum):
li = range(start, end)
sum = li[0] + li[-1]
li.remove(li[0])
li.remove(li[-1])
total_sum += sum
if len(li) == 0:
return total_sum
return sumNaturalNumbers(li[0], li[-1]+1, total_sum)
print sumNaturalNumbers(1,101, 0)有什么我可以改变\修复,使这个功能更奏鸣曲,这样我就可以提高自己在下一个工作面试?
编辑
我的目的是将列表中的第一项和最后一项相加,即101,然后乘以50。我要求展示我的思维方式,然后在解释之后,实施它。我知道函数和,但我需要用这种方式来实现。
发布于 2015-07-17 20:15:56
像那样吗?
def sum_gauss(start, end):
return ((end-start+1)/2) * (end+start)(在Python2中,您需要from __future__ import division)
发布于 2015-07-17 19:52:02
有一个内置函数sum,它与输入列表相加:
sum(range(start, stop+1))>>> sum(range(1, 11)) #Sum of numbers between 1 and 10, inclusive
55
>>> sum(range(1, 101)) #Sum of numbers between 1 and 100, inclusive
5050
>>> 发布于 2015-07-17 19:52:05
def sum_nums_in_range(start, end):
repeating_sum = 0
li = range(start, end + 1)
first_half = li[:len(li)/2]
second_half = li[len(li)/2:]
for a, b in zip(first_half, reversed(second_half)):
repeating_sum = a+b
return repeating_sum * len(li)/2https://stackoverflow.com/questions/31483654
复制相似问题