- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序设计与实习讲义6
程序设计实习2007 程序设计实习 第六讲 递归 /cpp2009 递归的基本思想 总体思想:将待求解问题的解看作输入变量x的函数f(x),通过寻找函数g,使得f(x) = g(f(x-1)),并且已知f(0)的值,就可以通过f(0)和g求出f(x)的值. 这样一个思想也可以推广到多个输入变量x,y,z等,x-1也可以推广到 x - x1,只要递归朝着出口的方向走就可以了. #include iostream.h int Factorial(int n) { if (n == 0) return 1; else return n * Factorial(n - 1); } 阶乘的栈 汉诺塔问题 汉诺塔问题 例题 :POJ1664放苹果 a个苹果,d个盘子,问多少种不同放法.盘子和苹果都是没有编号的,即 1,2,3 和 3,2,1算是同一种放法 (d0) 例题:ai2755 神奇口袋 在实现上有两种考虑: 因为numbers, n与递归没有太大关系,可以考虑使用全局量; 如果不使用全局量,而通过参数传递numbers, n,可以增强递归函数的独立性 程序(将numbers, n设为全局量 ) int numbers[50],n; int count(int ith, int sum){ if(sum == 0) return 1; if(ith==n || sum 0) return 0; return count(ith+1,sum-numbers[ith]) +count(ith+1,sum); } 将 n 个数放入数组 numbers后, count(0,40); 就能求出结果 例题 ai1979 黑瓷砖上行走 问题描述:有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入:包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下 ‘.’:黑色的瓷砖 ‘#’:红色的瓷砖 ‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次 当在一行中读入的是两个零时,表示输入结束。 输出:对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖) 样例输入: 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 0 0 样例输出: 45 #include iostream using namespace std; const int MAX 22 //方块四周加红色块,去掉边界判断, //使得递归统一终止于红色块 char rect[MAX][MAX]; //返回从某点出发能走到的格子数 int walkFrom(int currentRow, int currentCol); void main(){ int col,row; while(cin col row , col!=0 row !=0){ int i,j,startRow,startCol; for(i=0;iMAX;i++) for(j=0;jMAX;j++) rect[i][j]=#; for(i=1;i=row;i++) for(j=1;j=col;j++){ cin rect[i][j]; if(rect[i][j] == @){ startRow = i; startCol = j; rect[i][j]=‘.’; //人站立处是黑砖 } } cout walkFrom(startRow,startCol) endl; }//while } int walkFrom(int currentRow, int currentCol) { if(rect[currentRow][currentCol] == #) return 0; else{ //本瓷砖算走过,以后不能再走了 rect[currentRow][currentCol] = #; return 1+walkFrom(c
您可能关注的文档
最近下载
- 《趣味的手工创意--向日葵》-美术课件.ppt VIP
- 派出所民警先进事迹材料三篇 .doc VIP
- VIVITEK丽讯RU76953使用说明书.pdf VIP
- 原调正谱bE边疆的泉水清又纯钢琴伴奏联考.pdf VIP
- 泳池工程施工设计方案(3篇).docx VIP
- 少儿水粉 玫瑰庄园—美术课件.pptx VIP
- (一模)贵阳市2025年高三年级适应性考试(一)地理试卷(含官方答案).docx
- 《模型构建在高中生物教学中的应用研究》课题研究方案.doc
- 精品解析:四川省成都市武侯区2024-2025学年上学期八年级期末考试数学试题(原卷版).docx VIP
- 苏J9508室外工程-标准设计图集.pdf VIP
文档评论(0)