RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
python里fib函数,fib在python

Python小问题,可能涉及斐波那契数

这个是函数的地柜调用。

创新互联建站服务项目包括彭泽网站建设、彭泽网站制作、彭泽网页制作以及彭泽网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,彭泽网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到彭泽省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

当fib(5)执行过程,n = 5 进入else处理

递归调用Fib(n - 1) + Fib(n - 2) 这里n 是5,返回"Fib(4) + Fib(3)"的值。

Fib(4):

Fib(4)调用,Fib(n - 1) + Fib(n - 2) 这里n 是4,返回"Fib(3) + Fib(2)"的值

Fib(3) 调用,Fib(n - 1) + Fib(n - 2) 这里n 是3,返回"Fib(2) + Fib(1)"的值

Fib(2) 调用,Fib(n - 1) + Fib(n - 2) 这里n 是3,返回"Fib(1) + Fib(0)"的值

Fib(1) + Fib(0)调用,n = 1 和0 所以结果是Fib(1) + Fib(0) = 1 + 1 = 2

Fib(2) = 2

Fib(3) = 2 + Fib(1) = 3

Fib(4) = Fib(3) + Fib(2) = 3 + 2

同理得出第一步的Fib(3) = 3

fib(5) = Fib(4) + Fib(3) = 5 + 3 = 8

利用递归函数求斐波那契值python版

首先我们要了解一下什么是递归。

递归法,递归法就是利用上一个或者上几个状态来求取当前状态的值(个人看法)。也可以说成函数自己调用自己的一种解决问题的策略。因此递归法通常是依托函数来实现的,递归函数总是会有一个出口,我们在解决递归问题时,只需要找出递归的关系式以及递归函数的出口(这两个可以说是递归函数的核心了)。下面我将在这里举求斐波那契值的例子带领着大家具体的实践一下递归法。

很显然递归函数的递推式是:fib(n) = fib(n-1)+fib(n-2)。

递归函数的出口是当n为1时返回1,当n为0时返回0。

最后递归函数的核心代码就可以写出了:

然后总的代码就是:

具体思路如下:

语句 return fib(n-1)+fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0

因为只有第1个和第0个斐波那契值是确定的

例:

当n=3时

第一次调用函数fib会执行第三条语句(因为n1)这样求回返回fib(2)+fib(1)

第二次调用函数时,因为21所有会返回fib(1)+fib(0);因为1不大于1,所以调用函数时

会执行第二条语句返回1值。

第三次调用函数,会执行第一和第二条语句,依次返回0和1从而求得fib(2)

fib(3)=fib(2)+fib(1)

fib(2)=fib(1)+fib(0)

即fib(3)=fib(1)+fib(0)+fib(1)=2*fib(1)+fib(0)

Python 能解释一下这段代码吗

def fib(max): 定义一个函数,有一个参数

n,a,b=0,0,1 三个变量分别赋值为0,0,1

while nmax :

print b 输出b

a,b = b,a+b 将原b赋值给a, 将原a+b赋值给b

python3.4中fib(int(sys.argv[1]))是什么意思?如图

就是调用fib函数

#可以分开表示成:

n=int(sys.argv[1])

#[python fibo.py 1]这么执行 

#sys.argv里面存放的是命令行参数,argv[0]是脚本名(fibo.py),argv[1]里是第一个参数(1),因为获取的是字符串,所以int转为整形

fib(n)

如果解决了您的问题请采纳!

如果未解决请继续追问

Python中定义函数的使用方法?

4.6. 定义函数

我们可以创建一个用来生成指定边界的斐波那契数列的函数:

def fib(n): # write Fibonacci series up to n

... """Print a Fibonacci series up to n."""

... a, b = 0, 1

... while a n:

... print(a, end=' ')

... a, b = b, a+b

... print()

...

# Now call the function we just defined:

... fib(2000)

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

关键字 def 引入了一个函数 定义。在其后必须跟有函数名和包括形式参数的圆括号。函数体语句从下一行开始,必须是缩进的。

函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring。(更多关于 docstrings 的信息请参考 文档字符串) 有些工具通过 docstrings 自动生成在线的或可打印的文档,或者让用户通过代码交互浏览;在你的代码中包含 docstrings 是一个好的实践,让它成为习惯吧。

函数 调用 会为函数局部变量生成一个新的符号表。确切的说,所有函数中的变量赋值都是将值存储在局部符号表。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用。

函数引用的实际参数在函数调用时引入局部符号表,因此,实参总是 传值调用 (这里的 值 总是一个对象 引用 ,而不是该对象的值)。[1] 一个函数被另一个函数调用时,一个新的局部符号表在调用过程中被创建。

一个函数定义会在当前符号表内引入函数名。函数名指代的值(即函数体)有一个被 Python 解释器认定为 用户自定义函数 的类型。 这个值可以赋予其他的名字(即变量名),然后它也可以被当作函数使用。这可以作为通用的重命名机制:

fib

f = fib

f(100)

0 1 1 2 3 5 8 13 21 34 55 89

如果你使用过其他语言,你可能会反对说:fib 不是一个函数,而是一个方法,因为它并不返回任何值。事实上,没有 return 语句的函数确实会返回一个值,虽然是一个相当令人厌烦的值(指 None )。这个值被称为 None (这是一个内建名称)。如果 None 值是唯一被书写的值,那么在写的时候通常会被解释器忽略(即不输出任何内容)。如果你确实想看到这个值的输出内容,请使用 print() 函数:


文章标题:python里fib函数,fib在python
文章出自:http://scyingshan.cn/article/dsijhei.html