自从偶然间发现博客园以来,受益良多,在代码的道路上越走越远,成为一名“园丁”这么几天,本着“来而不往非礼也”的传统文化,我选择将自己对斐波那契数列的处理方法共享,如有大神位临,还请不吝赐教,在此谢过!
不知道有没有小伙伴像我一样为了一段代码死了无数的脑细胞,以至于愈来愈多的烦恼丝离我而去
本文只使用了python的基础语句,所以逻辑稍显复杂
闲话少叙,下面步入正题:
首先,我们要分析一下我们的对象:斐波那契数列【1,1,2,3,5,8,13...】,不难看出,从第三位开始,每一位都是前两位数之和,揭开了这层面纱之后,我们就可以根据这个特性来实现想要的功能了
def sum_f(e): #为了以后能够拿来用,这里直接将我要干的事“求任意位数的斐波那契数列之和”定义成了一个“方法”(sum_f(e))“e”即是我们实际要求的多少位位数
a = 0 #“a”和“b”是为了给之后能够实现循环的前置条件
b = 1
list_c = [1] #“list_c”是为了给循环求出来的斐波那契数一个容身之所,就像是去打鱼,你总要带个鱼篓
for i in range(0,e-1):
i = a + b
list_c .append(i) #通过第一次循环得到一个斐波那契数之后,将他写到list_c里
a = b #结束了第一个循环之后要进行第二轮,第二轮的“a”“b”显然不应该是第一轮的“a”“b”
b = i #此时的第二轮的“a”则是上一轮的“b”,“b”则是第一轮得出的“i”
print(list_c) #一直循环到需要的位数,便得到了一个列表,可以打印出来看看
d = 0 #从此开始就是求我们得出的列表内所有元素的和了
for i in range(0,len(list_c)):
d = d + list_c[i]
print(d) #打印结果
return #结束
#实例展示
sum_f(20)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
17710
另:如果要知道第20位的斐波那契数的值,只需要将列表最后一位提取出来就好,其余位数同理