练习之求和公式-心得及体会

        想了想还是把题目放上,让大家见识见识我的基础薄弱,连这种题目都不会.

题目:

"""问题描述
求1+2+3+…+n的值。
输入格式
输入包括一个整数n。
输出格式
输出一行,包括一个整数,表示1+2+3+…+n的值。"""

一个高中的求和公式就能解决的事,我却磨蹭了很长时间,我最先想到的是用递归的方式,来解决.在其中,我发现我还是对递归非常迷茫,在解决这道题后,我反思了下.

发现递归是一个重复性的操作,不断引用自身,我觉得用递归的形式,代码挺简单的,不过我听说递归好像有很大的劣处

递归代码如下:

n = int(input())
def summation(n):
    if n <= 1:
        return n
    return n + summation(n-1)
print(summation(n))

 递归的劣处,递归回占用大量的栈空间,可能会导致栈溢出,并且耗时.

for循环

k =0
for i in range(1, n+1):
    k = k + i
print(k)

 写到这里,看到代码的简单,就感觉很郁闷,不过也是初步学算法,以后会好起来的.

这几天浏览了下蓝桥杯,发现里面大都是算法和数据结构,果然思维很重要,我这才了解到爬虫跟python几乎是两回事.

我又发现了一个规律,对于大量重复性的操作,找到其规律,也就是形成公式,就可以更快得出结果,完爆递归和循环,因为通过公式,只需要操作一次,不用重复.

a1 = 1
s = n * a1 + (n * (n - 1)) / 2
print(s)

对于第二行,很熟悉吧!数学上的等差序列求和公式.

感谢观看!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值