一、递归的含义及一些用途
递归就是函数通过return语句实现自己调用自己的过程,基本上所有的程序语言都有递归算法,常有人说(’一般程序员使用迭代,天才程序员使用递归‘),汉诺塔游戏、谢尔宾斯基三角形、斐波那契数列
二、递归的深度和设定递归深度的函数
Python3中针对递归提供了程序保护机制,默认允许的递归深度是100层,此时我们常常会使用超过100层的递归深度,这时我们就可以使用Python3的默认程序修改递归层数,该函数在sys模块里面的setrecursionlimit()函数进行设置,参数就是想要的层数,
例:setrecursionlimit(250)
1 def jiecheng(number): 2 if number == 1: 3 return 1 4 else: 5 return number*jiecheng(number-1) 6 7 n = jiecheng(5) 8 n 9 120 10 11 n = jiecheng(80) 12 n 13 71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000
三、递归和迭代的对比
相同点:
递归和迭代都是循环的一种
不同点:
递归是重复调用函数自身实现循环,会使代码变得精简且高效,但是递归时调用函数需要入栈出栈,对于内存和CPU的消耗比较大,递归是根据终止条件来结束递归
迭代是函数内某段代码实现循环,而迭代是通过计数器来结束循环,当循环次数较大时,迭代的效率明显高于递归