扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
就是调用fib函数
公司主营业务:成都网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出娄底免费做网站回馈大家。
#可以分开表示成:
n=int(sys.argv[1])
#[python fibo.py 1]这么执行
#sys.argv里面存放的是命令行参数,argv[0]是脚本名(fibo.py),argv[1]里是第一个参数(1),因为获取的是字符串,所以int转为整形
fib(n)
如果解决了您的问题请采纳!
如果未解决请继续追问
1 这是一个 Fibonacci 数列的计算函数,使用了递归的方法
f(n) = 1, n=1
f(n) = n*f(n-1), n1
2 这个只有函数,没有执行代码
可以加上 print fib(2) 之类的
3 记住这是 Python,靠缩进来区分代码的分级,没有 end if 的语法
=========================================
函数开始处不是写了输出语句吗: print 'n =', n
return 是返回值啊
值可以用来给其他的变量赋值,或用于其他的函数中
如 x=fib(3)
没有返回值的话,就只能单独调用了
fib(3)
这个是函数的地柜调用。
当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
首先我们要了解一下什么是递归。
递归法,递归法就是利用上一个或者上几个状态来求取当前状态的值(个人看法)。也可以说成函数自己调用自己的一种解决问题的策略。因此递归法通常是依托函数来实现的,递归函数总是会有一个出口,我们在解决递归问题时,只需要找出递归的关系式以及递归函数的出口(这两个可以说是递归函数的核心了)。下面我将在这里举求斐波那契值的例子带领着大家具体的实践一下递归法。
很显然递归函数的递推式是: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)
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流