- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2算法基本工具_part1
*;主要内容;*;*;*;*;*;*;*;*;*;*;算法如下:;*;;*;*;*;*;*;*;*;*;*;*;*;*;*;3 递归设计要点- 整数的分划问题 ;模型建立: ;算法如下:;递归与循环的比较;;;递归算法设计:
1)同上,算法从低位到高位逐位求出各位数字并输出,求个位数字的算式为 n mod 10,下一步则是递归地求n\10的个位数字。
2)当n10时,n为一位数停止递归。
递归算法如下:
f2(n)
{if(n10)
print(n);
else
{ print( n mod 10);
f2(n\10);}
}
;*;【例3】找出n个自然数(1,2,3,…,n)中r个数的组合。;算法设计1:;算法1如下:;或者?
constitute2()
?{int n=5,r=3,i,j,k,t;
???t=0;
????for(i=1;i=n-r+1; i=i+1)
for(j=i+1;j= n-r+2;j=j+1)
for(k=j+1;k=n-r+3;k=k+1)
???????????? {t=t+1;
print(i,j,k);}
?? print(total=,t);
}
;? 在循环算法设计中,对n=5的实例,每个组合中的数据从小到大排列或从大到小排列一样可以设计出相应的算法。但用递归思想进行设计时,每个组合中的数据从大到小排列却是必须的;因为递归算法设计是要找出大规模问题与小规模问题之间的关系。;例如,当n=5,r=3时,所有组合为:
5????? 4????? 3????????? 5????? 4????? 2????????? 5????? 4????? 1????????? 5????? 3????? 2????????? 5????? 3????? 1????????? 5????? 2????? 1????????? 4????? 3????? 2????????? 4????? 3????? 1????????? 4????? 2????? 1????????? 3????? 2????? 1
total=10??
; 分析n=5,r=3时的10组组合数。
1)首先固定第一个数5,其后就是n=4,r=2的组合数,共6个组合。
2)其次固定第一个数4,其后就是n=3,r=2的组合数,共3个组合。
3)最后固定第一个数3,其后就是n=2,r=2的组合数,共1个组合。
至此找到了“5个数中3个数的组合”与“4个数中2个数的组合、3个数中2个数的组合、2个数中2个数的组合”的递归关系。;则递归算法的三个步骤为: ;递归算法如下: ;分析:算法2递归的深度是r,每个算法要递??
m-k+1次,所以的时间复杂性是O(r*n)。 ;?
文档评论(0)