第11讲 函数应用.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11讲 函数应用 第11讲 函数应用 本讲主要内容 函数的嵌套调用 函数的递归调用 公式递归问题 过程递归问题 数组作为函数的参数 数组元素作为函数参数 数组名作为函数参数 第11讲 函数应用 教学目标 熟悉函数嵌套、函数递归的概念,了解嵌套函数和递归函数的特点。 能定义和使用嵌套函数,掌握公式递归和过程递归的方法,能用函数求解递归问题。 熟练掌握数组元素作函数参数时函数的定义和调用方法。 熟练掌握一维数组作函数的参数时函数的定义和调用方法。 一、函数的嵌套调用 函数嵌套的概念 函数嵌套是指在一个自定义函数的函数体中,又出现了另外自定义函数的调用。如函数a调用函数b,函数b又调用函数c等。 一、函数的嵌套调用 例10-1: 已知组合数 二、函数的递归调用 公式递归问题 公式递归基本过程分两步: ⑴ 写出递归公式; ⑵ 将递归公式函数化; 公式递归问题举例 例10-2 用递归方法求 公式递归问题举例 递归函数 int sum(int n) { if(n==1) return(1); else return(sum(n-1)+n); } 公式递归问题举例 例10-3 用递归方法求n! 公式递归问题举例 递归函数 long fact(int n) { if(n=1) return(1); else return(n*fact(n-1)); } 二、函数的递归调用 过程递归问题 有的问题不能直接用一个递归公式进行描述,但处理过程包含了递归的思路,这一类问题称为过程递归。 最典型的过程递归问题——汉诺塔问题! 汉诺塔问题 题目介绍: 有三个柱和n个大小各不相同的盘子,开始时, 所有盘子以塔状叠放在柱A上,要求按一定规则,将柱A上的所有盘子借助于柱C移动到柱B上。移动规则如下: ⑴ 一次只能移动一个盘子。 ⑵ 任何时候不能把盘子放在比它小的盘子的上面。 汉诺塔问题 #include stdio.h long i=0; main() { int disks; void hanoi(int,char,char,char); printf(Number of disks: ); scanf(%d,disks); printf(\n); hanoi(disks,A,C,B);} void move_disk(char src, char dst) { if(i==5) { printf(\n); i=0; } i++; printf(%c -- %c ,src,dst);} void hanoi(int n, char src, char mid, char dst) { void move_disk(char,char); if (n==1) { move_disk(src,dst); return; } hanoi(n-1,src,dst,mid); move_disk(src,dst); hanoi(n-1,mid,src,dst); } 三、数组作为函数的参数 数组元素作为函数参数 数组元素作为函数的参数时,只传送作为实参的数组元素,此时按使用其他简单变量的方法使用数组元素。 ——值传递! 数组元素作为函数参数 例10-5 把一个整型数组的所有素数找出来。 三、数组作为函数的参数 一维数组名作为函数参数 数组名作为函数参数与数组元素作为函数的参数有本质的区别。数组名作为函数参数时传送的是数组的开始地址,是一种传址调用。 形参数组和实参数组要在各自的函数中进行等同的定义。 一维数组名作为函数参数 例10-6 设计一个对一维数组排序的sort()函数,并调用它实现数组排序。 一维数组名作为函数参数 例10-7 求一维数组的最大元素值。 函数应用-小结 函数嵌套和函数递归是两个不同的概念,函数嵌套是指在定义一个函数时调用了其他的自定义函数,函数递归是指在定义一个函数时调用了被定义的函数本身。 递归问题分为公式递归和过程递归两类,公式递归问题能够能够根据递归公式很容易获得,过程递归不能用公式描述,只能通过描述递归过程来实现,求阶乘问题是典型的公式递归问题,汉诺塔问题是典型的过程递归问题。 数组元素作为函数的参数时,函数的定义与调用方法与简单变量作函数的参数没有区别,因为我们目前使用的数组元素本身就是一个简单变量。数组元素作实参,只是把实参的值传递给形参,被调函数里的语句改变形参的值

文档评论(0)

tiangou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档