苏州网站设计公司排名,网址是什么,中国最顶尖的室内设计公司,买个网约车多少钱啊递归函数
什么是递归
在函数内部#xff0c;可以调用其他函数。如果一个函数在内部调用自身本身#xff0c;这个函数就是递归函数
递归函数必须有一个明确的结束条件每进入更深一层的递归时#xff0c;问题规模相对于上一次递归都应减少相邻两次重复之间有紧密的联系可以调用其他函数。如果一个函数在内部调用自身本身这个函数就是递归函数
递归函数必须有一个明确的结束条件每进入更深一层的递归时问题规模相对于上一次递归都应减少相邻两次重复之间有紧密的联系前一次要为后一次做准备通常前一次的输出就作为后一次的输入递归效率不高递归层次过多会导致栈溢出在计算机中函数调用是通过栈stack这种数据结构实现的每当进入一个函数调用栈就会加一层栈帧每当函数返回栈就会减一层栈帧。由于栈的大小不是无限的所以递归调用的次数过多会导致栈溢出
看个例子比如我们用循环来实现叠加
def sum1(n):sum 0for i in range(1,n 1):sum ireturn sum如果用递归来实现的话
def sum2(n):if n 0:return n sum2(n - 1)else:return 0看这个例子大概能理解递归函数是什么怎么写了那递归函数有什么有缺点呢
递归函数的优缺点
首先优点定义简单逻辑清晰 理论上所有的递归函数都可以写成循环的方式但循环的逻辑不如递归清晰。 缺点 使用时需要注意防止栈溢出 在计算机中函数调用是通过栈stack这种数据结构实现的每当进入一个函数调用栈就会加一层栈帧每当函数返回栈就会减一层栈帧。由于栈的大小不是无限的所以递归调用的次数过多会导致栈溢出。