递归算法堆栈溢出
递归算法:
一种直接或者间接的调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的。
特点:
①递归就是在过程或者函数里调用自身。
②在使用递归策略时,必须有一个明确的递归条件,称为递归出口。
③递归算法解题通常显得很简洁,但递归算法解题的效率较低。所以一般不倡导使用递归算法设计程序。
④在递归调用的过程当中系统的每一层的返回点、局部变量等开辟了栈来存储。递归函数次数过多容易造成栈溢出等。 所以一般不倡导用递归算法设计程序
递归如果没有终止条件会导致递归调用成为死循环而不能正常结束,并且会造成栈溢出。
解决递归的栈溢出问题:
使用尾递归进行优化,但是Python中并没有尾递归,不过,有大牛写过尾递归的装饰器可以解决这个问题。