圳职业技术学院 Shenzhen Polytechnic 第六单元(3):函数的嵌套调用和递归调用 教学内容 函数的嵌套调用和递归调用 教学目标 应知 什么是嵌套调用,什么是递归调用 应会 了解嵌套调用与递归调用时程序的执行顺序 编写简单递归函数 难点 函数的递归 教学方法 引探教学法,通过分析题目引导学生思路,尝试写程序的训练。 教学过程 1.求解s=1!+2!+3!+4!+ 1.编写函数 long fact(intn)求n的阶乘(复习巩固函数的定义、调 用、参数等) 2.编写函数 long factum(intn)求1!+2!+3!+…+n!(在此 函数中调用fact函数) 3.编写主函数,输入数据,调用 factum函数,输出结果。(嵌套调用) 2.通过求解年龄例子引入递归 3.将求阶乘fact函数改为递归函数 4.分析第一步中的各个n,考虑变量的作用域与存储类型 5.将阶乘函数采用静态变量编写(将阶乘结果定义为静态变量返回 [static int f=li f=n氵 return fi h main () I int ii for(i=1;i<=5;i++) printf("号d!=d\n",i,fac(立); 计算机系乌云高娃 Wygw2lcn, com第44页共83页
深 圳 职 业 技 术 学 院 Shenzhen Polytechnic 计算机系乌云高娃 Wygw@21cn.com 第 44 页 共 83 页 第六单元(3):函数的嵌套调用和递归调用 教学内容 函数的嵌套调用和递归调用 教学目标 应知 什么是嵌套调用,什么是递归调用 应会 了解嵌套调用与递归调用时程序的执行顺序 编写简单递归函数 难点 函数的递归 教学方法 引探教学法,通过分析题目引导学生思路,尝试写程序的训练。 教学过程 1. 求解 s = 1! + 2! + 3! + 4! + … … +n! 1. 编写函数 long fact(int n )求 n 的阶乘(复习巩固函数的定义、调 用、参数等) 2. 编写函数 long factsum( int n)求 1!+2!+3!+…+n! (在此 函数中调用 fact 函数) 3. 编写主函数,输入数据,调用 factsum 函数,输出结果。(嵌套调用) 2. 通过求解年龄例子引入递归 3. 将求阶乘 fact 函数改为递归函数 4. 分析第一步中的各个 n , 考虑变量的作用域与存储类型 5. 将阶乘函数采用静态变量编写(将阶乘结果定义为静态变量返回) int fac(int n) {static int f=1; f=f*n; return f;} main() { int i; for(i=1;i<=5;i++) printf(“%d! = %d\n”,i,fac(i)); }
圳)职业技术学院 Shenzhen Polytechni 学生容易出错的地方 混淆函数的声明与定义 参数传递时试图用形参影响实参 函数调用不理解返回值的意义 问题与讨论 定义函数时怎样确定参数与返回值 小结(可由问题与讨论方式给出) 粤C语言中,函数可以嵌套调用,不可以嵌套定义 函数递归调用指对函数自身的调用,算法描述为 1.递归的算法描述为 a.if(递归终止条件) return(条件终止时的值) b. else return递归公式 在函数内部定义的变量为局部变量,只在本函数内有效,在函数外定义的变量 为全局变量,作用域为从定义位置开始到本源文件结束 课后任务 自 完成项目单2的报告 计算机系乌云高娃 Wygwl2lcn, com第45页共83页
深 圳 职 业 技 术 学 院 Shenzhen Polytechnic 计算机系乌云高娃 Wygw@21cn.com 第 45 页 共 83 页 学生容易出错的地方 混淆函数的声明与定义 参数传递时试图用形参影响实参 函数调用不理解返回值的意义 问题与讨论 定义函数时怎样确定参数与返回值 小结(可由问题与讨论方式给出) C 语言中,函数可以嵌套调用,不可以嵌套定义 函数递归调用指对函数自身的调用,算法描述为 1. 递归的算法描述为 a. if ( 递归终止条件) return (条件终止时的值) b. else return 递归公式 2. 在函数内部定义的变量为局部变量,只在本函数内有效,在函数外定义的变量 为全局变量,作用域为从定义位置开始到本源文件结束 课后任务 完成项目单 2 的报告