Python递归函数的定义和几个小例子

递归函数

(1)什么是递归函数?

我们都知道,一个函数可以调用其他函数。如果这个函数在内部调用它自己,那么这个函数就叫递归函数。

(2)递归函数的作用

举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * … * n

#不使用递归的方法: n=4      #求4的阶乘 result=1 i=1 while i<=4:     result=result*i     i+=1  print(result)  #使用递归的方法: def test1(n):#定义函数来计算数字n的阶乘     if n==1:         return 1     return n * test1(n-1)  print(test1(5)) #1在函数的内部调用自己本身 #2递归函数本质是一个方法的循环调用,注意:有可能出现死循环 #3一定要定义递归的边界(什么时候退出循环) 

输出结果为:

 24  120  [Finished in 0.4s] 

从上面两中方法的对比可以看出,递归函数的作用和循环的方法效果一样,即递归函数本质上是一个方法的循环调用,注意:有可能会出现死循环。因此,使用递归函数时,一定要定义递归的边界(即什么时候退出循环)。

递归函数的另一个案例是斐波纳契数列。

斐波纳契数列:1,1,2,3,5,8,13。。。(该数列中,有n个数字,从第三个数字开始:数值 =前一个数字 + 前面一个数字)

即,n=(n-2)+(n-1)

def get_num(n):#获取斐波拉契数列中第n个数字的值     if n==1 or n==2:         return 1     return get_num(n-1) + get_num(n-2)  #把获取的斐波拉契数字存放到列表中 nums=[] for i in range(1,21):     nums.append(get_num(i))#get_num获得一个斐波拉契数字  print(nums) 

输出结果为:

 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]  [Finished in 0.4s] 

以上两个案例是递归函数的经典案例,需要记住其使用方法。注意:在实际使用中,递归函数由于消耗时间比较长(相比for循环和while循环),所以很少使用。