Python编程斐波那契数列(python编程斐波那契数列以递归的方法)

http://www.itjxue.com  2023-03-04 11:43  来源:未知  点击次数: 

Python编程题9--斐波那契数列

请求出符合斐波那契数列规律的第11项。

注意: 递归方式实现起来比较简洁,但其效率较低,不推荐。

请求出符合斐波那契数列规律的前11项。

对于斐波那契数列:1、1、2、3、5、8、13、……。我们把其数列中的数称为斐波那契数(Fibonacci数)。

如果给定一个数N,需要让其变为一个Fibonacci数,每一步可以把当前数字N变为N-1或者N+1,那么请求出最少需要多少步,才可以把N变为Fibonacci数。

计算机二级Python试题解读:输出斐波那契数列

题目:

根据斐波那契数列的定义,F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n=2),输出不大于50的序列元素。例如:屏幕输出实例为:0.1.1.2.3…(略)。

代码模板:

考查知识点: while循环结构、多变量赋值。

试题解读

while是循环结构的关键字,后面紧跟循环条件。题目要求输出不大于50的序列元素,变量a存储斐波那契数列元素,即变量a的值不大于50,即条件表达式:

a=50

填写代码的第2个位置为语句:

a,b=_______

该语句为a和b赋值,a是斐波那契数列的第n项元素,b是斐波那契数列的第n+1项元素,且初始a=0,b=1,则应将b赋值给a,a+b赋值给b,即代码位置处写入下面的表达式:

a,b= b,a+b

完整的程序代码:

知识点

1、 while循环结构

while循环结构的语法为:

其中,表达式是循环执行的条件,每次循环执行前,都要对表达式进行计算,表达式返回逻辑值,当表达式返回结果为真时则执行循环体,否则退出循环,如果表达式返回结果在循环开始时就为假,则不执行循环体,直接退出循环;循环体包含一条或多条语句。

单个的变量、逻辑值、数值也是表达式。Python规定,当表达式需要返回逻辑值时,非0的数值为真值,0值为假值。

2、多变量赋值操作

可以在一行赋值语句中创建多个变量,语法规则是 :

变量名称1,变量名称2,……,变量名称n = 值1,值2,……值n

每个变量名称之间用英文逗号分隔。

例如下面的语句创建了两个变量num1和num2,num1的值是20,num2的值是30。

Python实现斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。

n=39

????????见到题目很自然联想到用递归或是用数组将前面的结果全部存储起来(这个想法其实和递归没区别),写起来最简单。但实际写出来发现不现实,运行效率太低,提交答案的时候果然提示超出要求时间,程序太过复杂。查阅答案的时候才发现一个很巧妙的方法(主要还是自己太笨了脑筋不会拐弯=.=||),其实F(n)=F(n-1)+F(n-2),也就是说整个运算过程其实只用保存两个数值即可计算出所需结果,并不需要保存前面的全部结果。2个数值,就应该联想到通过模2来存取数值(写到这里愈发觉得自己是个猪头),这样大大提高了效率,降低了存储空间。

? ? ? ? 其次是在实现过程中要注意一个小问题,最开始本猪写的是 for i in range(2,n) ,后来发现答案全错了,原来是因为n=2时, range(2,2) 为0,并不会运算下面的值,所以需要多算一位。

# -*- coding:utf-8 -*-

class Solution:

? ? def __init__(self):

? ? ? ? self.temp_Array = [0,1]

? ? def Fibonacci(self, n):

? ? ? ? if type(n) != int or n = 0:

? ? ? ? ? ? return False

? ? ? ? elif n == 1:

? ? ? ? ? ? return 1

? ? ? ? else:

? ? ? ? ? ? for i in range(2,n+1):

? ? ? ? ? ? ? ? self.temp_Array[i%2] = self.temp_Array[0]+self.temp_Array[1]

? ? ? ? ? ? return self.temp_Array[n%2]

Python:理解迭代器,并用迭代器生成斐波那契数列

-- 斐波那契数列,是有一系列整数组成的数列;

-- 这一数列任意位置上的数值与后一位相加,等于第三位数值;

-- 示例:

-- 方法缺陷:

(1)每次只能获取一个末位的数值,而不是整个数列;

(2)如果数值太大,运行时间会变得非常的长;

-- 如上面的例子,max_index = 30 的时候程序运行时常只需要 0:00:00.749871 秒,到了 max_index = 40 的时候就已经需要 0:00:57.805053 秒,这种耗时的增速在实际生产中是不能接受的;

-- 该方法的优点:相比与前面的方法,程序运行耗费的时间相对较快;

-- 该方法的缺陷:该方法使用 result_list = [] 作为一个容器存储生成的数值,如果数值足够大这个 list 将会占用大量内存空间,简言之: 如果数值过大,会占用大量内存 ;

-- 有兴趣的小伙伴可以尝试 max_index=10000 时程序的执行情况,看一看程序内存占用情况;

-- 请注意:你的电脑可能会被卡死!!!

(责任编辑:IT教学网)

更多

推荐FTP服务器文章