![835abccb0428f72b8758161bd132b881.png](https://i-blog.csdnimg.cn/blog_migrate/0b5f151e4893313212ccf7609e0d0812.png)
1.1 定义与分类
在定义一个过程或函数时,出现直接或者间接调用自己的成分,称之为递归。
(1)若直接调用自己,称为直接递归;若间接调用自己,则称为间接递归,示意图如下。
直接递归
(2)如果一个递归函数中递归调用语句是最后一条执行语句,则称这种递归调用为尾递归,如上面的求n!(直接递归)。
1.2 何时使用递归
(1)定义是递归的。有许多数学公式、数列等的定义是递归的,如上面的求n!(直接递归),二叉树的定义也是递归的。
(2)数据结构是递归的,如单链表:
(3)问题的求解方法是递归的,如最著名的Hanoi塔问题。
1.3 递归模型
(1)建立模型
为了更好的利用递归求解问题,我们现在通过求n! 递归算法认识递归结构,并抽象出递归模型。