简介:
递归是很多算法中都使用到的一种编程方法,他是一种优雅的问题解决方法。
优缺点:
使用递归可以使我们的程序更容易让人理解,但是性能上可能要弱于使用循环的方式。
注意事项:
编写递归函数时,必须记住两点:基线条件;递归条件
基线条件:指函数何时不再调用自己。
递归条件:指函数调用自己。
栈:
何为调用栈?理解调用栈是学会使用递归前提,我们知道:栈是一种数据结构,而计算机在内部使用被称为调用栈的栈
每当一个函数被调用,计算机都会将该函数调用涉及到的所有变量的值存储到内存中,计算机使用一个栈来表示这些内存块(一个函数中的变量存储到一个内存块中),如果在一个函数中调用另外一个函数的话,那么调用栈的形式就是一个栈中从下往上依次堆积。
即栈存在深度,随着调用函数链的增加,栈的高度越来越高,其中的内存块越来越多。当函数调用结束,其对应的内存块就会被弹出。
而调用栈就是用于存储多个函数变量的栈。
总结:
递归是指调用自己的函数
每个递归都有两个条件:基线条件和递归条件
栈有两种操作:压入和弹出
所有函数调用都进入调用栈
调用栈可能很长,这将会占用大量内存