数据结构与算法分析第1次习题课chapter1,2.pptxVIP

数据结构与算法分析第1次习题课chapter1,2.pptx

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Exercises1Writearecursivemethodthatreturnsthenumberof1’sinthebinaryrepresentationofN.Usethefactthatisequaltothenumberof1’sintherepresentationofN/2,plus1,ifNisodd.数字N二进制中1的个数设N的二进制表示有n位,即求n位二进制数中1的个数,即求前n-1位二进制数中1的个数与最后一位1的个数的总和。边界条件:(n==0)递归返回段:返回n递归前进段:count(n/2)+n%2;

代码publicintcount(intn){if(n==0){return0;}else{returnn%2+count(n/2);}}条件n==1不用作为边界条件,每一次会多一次判断。不必讨论n的奇偶性。

Exercises2Writetheroutineswisethefollowingdeclarations:publicvoidpermute(Stringstr);privatevoidpermute(char[]str,intlow,inthigh)ThefirstroutineisadriverthatcallsthesecondandprintsallthepermutationsofthecharactersinStringstr.Ifstris“abc”,thenthestringsthatareoutputareabc,acb,bac,bca,cab,andcba.Userecursionforthesecondroutine.全排列n个字母的全排列,一个一个地进行挑选边界条件:只剩一个字母(low==high)递归返回段:输出得到的一个排列递归前进段:对剩下的n-1个字母进行全排列abcabcbaccbaabcacbabcacb

//low和high标记进行全排列的字母的范围publicvoidperm(char[]str,intlow,inthigh){if(low==high){for(charc:str)coutc;coutendl;}else{for(inti=low;i=high;i++){swap(str,low,i);permute(str,low+1,high);swap(str,low,i);}}}

交换函数//str是引用传递(passedbyreference)voidswap(char[]str,inti,intj){chartemp=str[i];str[i]=str[j];str[j]=temp;}

Exercises3已知a[n]为整型数组,试写出实现下列运算的递归算法。1)求数组a中的最大整数。2)求n个整数的平均值

数组中最大整数(1)将数组中前n-1个数的最大值与第n个数比较,返回较大的。边界条件:(n==1)。递归返回段:返回a[0]。递归前进段:将剩下的n个数的前n-1个数的最大值与第n个数进行比较,返回较大的。

publicintfindMax(int[]a,intn){//n表示第n个元素,对应数组a[n-1]if(n==1){returna[0];}else{inttemp=findMax(a,n-1);returntempa[n-1]?temp:a[n-1];}}

不好的编程方式else{if(a[n-1]findMax(a,n-1)) returna[n-1]; else returnfindMax(a,n-1);}

数组中最大整数(2)分别求出数组前半段和后半段的最大值,返回其中较大的。边界条件:(low==high)。递归返回段:返回a[low]。递归前进段:计算剩下的n个数的前半段和后半段的最大值,返回其中较大的。

//

文档评论(0)

趁早学习 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档