第6章1_程序设计基础.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文档。上传文档
查看更多
第6章1_程序设计基础.ppt

递归信任 理解递归问题的原则 不分析复杂细节而仅考虑单一层次上的操作 不必跟踪递归调用的堆栈框架 基本递归假设 只要递归调用时的参数比原始参数在某种程度上更简单,则递归调用就一定能获得正确答案 递归心理学:这种简单递归调用一定正确工作的假设即为递归信任 递归实现是否检查了最简单情形 在尝试将问题分解成子问题前,首先应检查问题是否已足够简单 在大多数情况下,递归函数以 if 开头 如果程序这样,仔细检查源程序 是否解决了不是最简单情形 大量递归错误是由没有正确解决最简单情形导致的 最简单情形不能调用递归 递归分解是否使问题更简单 只有分解出的子问题更简单,递归才能正确工作,否则将形成无限递归,算法无法终止 问题简化过程是否能够确实回归最简单情形,还是遗漏了某些情况 子问题是否与原始问题完全一致 如果递归过程改变了问题实质,则整个过程肯定会得到错误结果 子问题的解是否正确组装为原始问题的解 将子问题的解正确组装以形成原始问题的解也是必不可少的步骤 * * * #includeiostream #includeiomanip using namespace std; void print(int[][4],int); int main() { const int n=5; int a[n][4]; coutEnter matrix a:\n; for(int i=0;in;i++) for(int j=0;j4;j++) cina[i][j]; coutYou have entered the matrix a:\n; print(a,n); return 0; } void print(int array[][4],int xsize) { for(int i=0;i=xsize-1;i++) { for(int j=0;j4;j++) coutsetw(10)array[i][j]; coutendl; } } 问题:二维数组作为参数 6.2 递推 递推是计算机数值计算中的一个重要算法,可将复杂运算化为若干重复的简单运算,发挥计算机长于重复处理的特点。 【任务6.3】五人分鱼 假定A、B、C、D、E 五人的编号分别为1、2、3、4、5, 整数数组 fish[k] 表示第 k 个人所看到的鱼数: fish[1] A所看到的鱼数,合伙捕到鱼的总数 fish[2]=(fish[1]-1)*4/5 B所看到的鱼数 fish[3]=(fish[2]-1)*4/5 C所看到的鱼数 fish[4]=(fish[3]-1)*4/5 D所看到的鱼数 fish[5]=(fish[4]-1)*4/5 E所看到的鱼数 写成一般形式: fish[i] = (fish [i-1]–1) * 4/5 i = 2, 3, …,5 换一种写法: fish[i-1] = fish[i] * 5/4 +1 i = 5, 4,…,2 分析: 1. 当 i = 5 时,fish[5] 表示 E 醒来看到的鱼数,该数应满足 fish[ 5 ] % 5 == 1 2. 当 i = 5 时,fish[i-1] 表示 D 醒来看到的鱼数,这个数要满足 fish[ 4 ] = fish[ 5 ] * 5 / 4 + 1 3 . 从小到大枚举,可以把 fish[5] 初始化为 6 来试,之后每次增加 5 再试,直至递推到 fish[1] 得整数为止。 【任务6.3】的程序框图 …… int main( ) { int fish[6]={1,1,1,1,1,1}; // 记录每人醒来后看到的鱼数 int i=0; do { fish[5]=fish[5]+5; // 让E看到的鱼数增5 for (i=4; i=1; i--) { if ( fish[i+1]%4 != 0 ) break; // 跳出for循环 else fish[i]=fish[i+1]*5/4+1; // 计算第i人看到的鱼数 } } while( i=1 ); for (i=1; i=5; i++)

文档评论(0)

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

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档