跳至正文
View Categories

< 1 min read

阶乘的求解 #

  1. 斐波那契数列递归函数的定义
  2. 斐波那契数列递归的拆解
  3. 递归的出口

斐波那契数列的介绍 #

  • 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:f(1)=0,f(2)=1, f(n)=f(n-1)+f(n-2)(n ≥ 3)
  • 如何求解第n个斐波那契数呢,首先我们定义递归函数f(n),功能就是求解斐波那契数列的第n个数
  • def f(n):#f(n)函数功能:返回第n个斐波那契数,参数为n
    	pass

    递归的拆解 #

    事实上该数列的递归拆解在定义中已经体现,即f(n)=f(n-1)+f(n-2),其实就是f(n)的递推表达式。这也为我们数学问题的递归拆解提供了一个思路,即找到问题的递推表达式

    def f(n):
    	s= f(n-1)+f(n-2)#递归函数地拆解
    	return s

    递归的出口 #

    根据斐波那契数列的定义,可以看到这里递归的边界条件有两个即n=1时或者n=2时,f(1)=1,f(2)=1。根据边界条件将n=1或者n=2作为递归函数的出口。

    def f(n):
    	if n==1 or n==2:
    		return 1 #递归的出口
    	s= f(n-1)+f(n-2)#递归的拆解
    	return s

    小结 #

  • 根据斐波那契数列的递归算法,理解递归算法的三要素
  • 掌握斐波那契数列求解的递归算法
  • 习题 #

    1. 画出上例中f(6)递归调用执行过程图
    2. 使用递推的算法实现f(n)的功能,并说一说与递归算法有什么不同