- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法設计与分析实验报告_肖志强
院 系: 计算机科学学院
专 业: 计算机科学与技术
年 级: 2012
课程名称: 算法设计与分析基础
班 号: 1201
组 号: 1
指导教师: 邢光林
2015年 5 月 25 日
组员 学号 姓名 2012213508 蒲灿 2012213510 肖志强 2012213514 邹治东 实验名称 算法分析基础
——给定一个非负整数n,计算第n个Fibonacci数 实验室 9#206 实
验
目
的
或
要
求 实验目的
1)理解递归算法和迭代算法的设计思想以及递归程序的调式技术
2)握并应用递归算法和迭代算法效率的理论分析(前验分析)和经验分析(后验分析)方法;
3)理解这样一个观点:不同的算法可以解决相同的问题,这些算法的解题思路不同,复杂程度不同,效率也不同;
二.实验要求
1)使用教材2.5节中介绍的迭代算法Fib(n),找出最大的n,使得第n个Fibonacci数不超过计算机所能表示的最大整数,并给出具体的执行时间;
2)对于要求1),使用教材2.5节中介绍的递归算法F(n)进行计算,同样给出具体的执行时间,并同1)的执行时间进行比较;
3)对于输入同样的非负整数n,比较上述两种算法基本操作的执行次数;
4)对1)中的迭代算法进行改进,使得改进后的迭代算法其空间复杂度为Θ(1);
5)设计可供用户选择算法的交互式菜单(放在相应的主菜单下)。
实
验
原
理
(
算
法
基
本
思
想
) 迭代算法求最大Fibonacci在数列中位置
1.先利用迭代求得计算机能表示的最大数MaxUnsignedInt.
unsigned long int MaxUnsignedInt = 1;
while ( MaxUnsignedInt*2+1 != MaxUnsignedInt )
{
MaxUnsignedInt=MaxUnsignedInt*2+1;
}
从1起进行(n-1) +( n-2) = n迭代,直到条件(temp3temp)时发生溢出(及超过最大数),退出循环。求得此时的迭代次数-1即为最大Fibonacci的位置。
unsigned long int n=MaxUnsignedInt;
for( i=1; temp=n; i++ )//temp=n
{
temp=temp1+temp2;
if( temp3temp)//当temp3temp时,则发现temp发生溢出,结束计算
break;
temp3=temp;
temp2=temp1;
temp1=temp;
}
递归算法
根据
/ 0 n=0f(n)= 1 n=1 \ f(n-1)+f(n-2) n=2
进行递归调用求解。
long FF(unsigned int tt)//use di gui
{
if( tt = 1 )
return tt;
else
return FF(tt-1) + FF(tt-2);
}
三.改进空间复杂度为Θ(1)。
利用公式:F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}
int fib(int n) { double gh5=sqrt((double)5); return (pow((1+gh5),n)-pow((1-gh5),n))/(pow((double)2,n)*gh5); }
程
序
代
码 void fibo()
{
unsigned long int MaxUnsignedInt,n,times,t=100;
clock_t start = clock();
MaxUnsignedInt=1;
while ( MaxUnsignedInt*2+1 != MaxUnsignedInt )
{
MaxUnsignedInt=MaxUnsignedInt*2+1;
}
cout时间消耗:clock() - startendl;
n=MaxUnsignedInt;
int choose;
bool end_this=true;
while(end_this)
{
cout*******************************
您可能关注的文档
最近下载
- 刑事审判参考2001年第7辑(总第18辑).pdf VIP
- 刑事审判参考2001年第4辑(总第15辑).pdf VIP
- GB/T 18998.5-2022工业用氯化聚氯乙烯(PVC-C)管道系统 第5部分:系统适用性.pdf
- 刑事审判参考2001年第8辑.总第19辑.pdf VIP
- 急诊危重症护理新进展题库答案-2025年华医网继续教育答案.docx VIP
- 《共圆中国梦》教学设计 统编版道德与法治九年级上册.pdf
- 新解读《DL_T 2765—2024输变电工程逻辑模型规范》最新解读.docx VIP
- 2025年锅炉水处理作业G3证理论考试笔试试题(400题)含答案.docx VIP
- 刑事审判参考2001年第9辑.总第20辑.pdf VIP
- 房地产开发重要节点及流程.pptx VIP
文档评论(0)