首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >范围间自然数之和

范围间自然数之和
EN

Stack Overflow用户
提问于 2015-07-17 19:49:39
回答 8查看 2.7K关注 0票数 1

这是我在求职面试中被问到的一个问题。

问题是如何将所有自然数之和在1到100之间,我还要求用python编写这个程序。

这就是我写的代码:

代码语言:javascript
复制
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。我要求展示我的思维方式,然后在解释之后,实施它。我知道函数和,但我需要用这种方式来实现。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-07-17 20:15:56

像那样吗?

代码语言:javascript
复制
def sum_gauss(start, end):
    return ((end-start+1)/2) * (end+start)

(在Python2中,您需要from __future__ import division)

票数 1
EN

Stack Overflow用户

发布于 2015-07-17 19:52:02

有一个内置函数sum,它与输入列表相加:

代码语言:javascript
复制
sum(range(start, stop+1))
代码语言:javascript
复制
>>> 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
>>> 
票数 2
EN

Stack Overflow用户

发布于 2015-07-17 19:52:05

代码语言:javascript
复制
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)/2
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31483654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档