Python----递归函数

一、基础概念:

(1)如果一个函数体直接或者间接调用自己,那么这个函数就称为递归函数;也就是说,递归函数体的执行过程中可能会返回去再次调用该函数.

(2)递归三要素:
①明确终止条件;
②给出递归终止时的处理办法;
③提取重复的逻辑,缩小问题规模;

(3)递归要求:
递归算法所体现的“重复”一般有三个要求:
①每次调用在规模上都有所缩小(通常是减半)
②是相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出作为后一次的输入)
③在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模位达到直接解答的大小为条件)无条件递归调用将会成为死循环而不能正常结束

eg:
def digui():
if 递归终止条件:
return 给出递归终止时的处理办法
提取重复的逻辑,缩小问题规模(调用函数本身)

二、递归实例:
斐波那契数列即著名的兔子数列:1、1、2、3、5、8、13、21、34、……

数列特点:该数列从第三项开始,每个数的值为其前两个数之和,用python实现起来很简单:

def rabbit2(n):
if (n1 or n2):
return 1
else:
return rabbit2(n-1)+rabbit2(n-2)

注意:
(1)深度—你的递归层次不能太多,容易造成内存溢出。
(2)代码的可读性不高,不见得非得用递归。
(3)迭代操作,用来对未知节点不明了的地方。

猜你喜欢

转载自blog.csdn.net/charuiyu/article/details/86530459