今天给各位分享一个常见的题目:求斐波那契数列前n项分别是什么(也称为黄金分割数列),整个数列需满足一个条件即第三项的值等于前两项相加的和,如第一项是1、第二项是1、第三项是2、第四项是 3、第五项是5...
满足公式:f(n+2)=f(n+1)+f(n)
拿到这个题目很多人不知道思路,接下来我会带领各位一步一步地梳理分析。
首先,我们需要定义一个函数,函数里面至少要有一个变量n来作为传值的对象,即我要求前n项的内容,所以必须要有一个n在函数中作为形式参数。
def fibo(n):
pass
函数构件好了之后则需要考虑初始值的问题,我们定义一个初始值的默认值为0作为记录循环轮数的变量,且会不断增长,所以还需要一个空的列表(list)来容纳接下来程序生成的数字序列。
def fibo(n):
i = 0
fibo_list = []
由于是循环递增的,所以必不可少的就是while循环了,从而实现循环增长,我们定义一个while循环,根据题目要求(第一项和第二项为1),需要设置2个判断:
判断1:当i=0 或 i=1的时候,列表中的前两位都是1
判断2:当i大于等于2的时候,第三项的值等于第一项与第二项的和,并添加到列表
def fibo(n):
i = 0
fibo_list = []
while i < n:
if i == 0 or i == 1:
fibo_list.append(1)
if i >= 2:
third_num = fibo_list[-1] + fibo_list[-2]
fibo_list.append(third_num)
写到这里,大致框架已经构建好了,只需让循环动起来并输出,调用函数时给n赋值即可,使用i += 1即可实现(i+=1等价于i = i+1)
def fibo(n):
i = 0
fibo_list = []
while i < n:
if i == 0 or i == 1:
fibo_list.append(1)
if i >= 2:
third_num = fibo_list[-1] + fibo_list[-2]
fibo_list.append(third_num)
i += 1
print(fibo_list)
fibo(10)
以上代码运行后就可以实现从第一项输出到第十项
结果如下:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
欢迎关注,带你探秘全栈的程序世界