想了想还是把题目放上,让大家见识见识我的基础薄弱,连这种题目都不会.
题目:
"""问题描述 求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)
对于第二行,很熟悉吧!数学上的等差序列求和公式.
感谢观看!