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