第 11 章 递归江苏技术师范学院计算机应用基础教研室第 11 章 递归 本章教学目的和要求:1 .理解递归的概念和两种递归方法。2 .掌握使用递归的理由、构成递归的两个条件及其优缺点。3 .掌握 VB 中递归的定义和调用的具体执行过程。11.1 递归的基础知识 在一个 Sub 或 Function 过程中调用另外一个过程,称为 过程的嵌套调用。在过程中直接地调用自己过程,即为递归过程。包含“递推”和“回归”两部分。分为 : 直接递归和间接递归使用递归必须具备两个条件:1 、能用递归形式表示,并且递归向结束条件发展2 、递归必须具有结束的条件11.2 典型例题分析 Private Function Fact(n As Integer) As Long If n > 1 Then Fact = n * Fact(n - 1) Else Fact = 1 End If End Function例 11.1 编写递归函数求阶乘n!父过程中调用:i = fact(3)Sub fact(n As Integer) If n = 1 Thenfact = 1 Else fact = n * fact(n - 1) End IfEnd Function传递 3返回 6Sub fact(n As Integer) If n = 1 Thenfact = 1 Else fact = n * fact(n - 1) End IfEnd FunctionSub fact(n As Integer) If n = 1 Thenfact = 1 Else fact = n * fact(n - 1) End IfEnd Function传递 2返回 2传递 1返回 1例 11.2 编写递归函数计算 Fibonacci 数列第 n 项的值Private Function Fibo(ByVal n As Integer) As Long If n <= 1 Then Fibo = n Else Fibo = Fibo(n - 1) + Fibo(n - 2) ' 递归调用 End IfEnd Function使用递归的的优缺点 :1 、使用递归设计程序非常紧凑2 、程序设计得不好,递归调用的程序很容易出错3 、每调用一次自己都会在内存中复制一份,因此调用的次数越多,占用的空间越大。如果超过一定的限制,就会出错。本章小结本章作业 理论教材: Pg.204 第 4 题(上机验证)预习实训教材 Pg.112 实验习题 1 、 2