- 递归就是指调用自己。
- 调用自己很容易进入无限循环,所以需要一个计数器。
- 计数器的作用是告诉递归函数:什么时候停止。
- 因而,每个递归函数有2个条件:基线条件(base case), 递归(recursive case)。
- 基线条件(base case):是指函数不再调用自己的条件。
- 递归(recursive case):是指函数调用自己的条件。
- 栈有2种操作:压入(插入),弹出(读取&删除)。
- 所有函数的调用都会进入栈。
- 递归函数的执行过程就是不停的将带有不用参数的自己本身压入栈,直到符合基线条件,再层层弹出。
- 栈可能很长,这将占用大量的内存。(避免)












网友评论