网站大量收购独家精品文档,联系QQ:2885784924

BX李建辉实验三递推算法上交.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  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文档。上传文档
查看更多
BX李建辉实验三递推算法上交.doc

电子信息学院 实验报告书 课程名: 算法设计与分析 题 目: 实验三 递推算法 实验类别 【设计型】 班 级: BX1109 学 号: 37 姓 名: 李建辉 1.实验目的 掌握递推算法概念 掌握递推算法原理,用递推算法解决实际问题 实验要求 递推求解b数列,已知b数列定义:,递推求b数列的第20项与前20项之和。 多幂序列,设x,y,z为非负整数,试计算集合,的元素由小到大排列的多幂序列第n项与前n项之和。 粒子裂变,核反应堆中有α和β两种粒子,每秒钟内一个α粒子可以裂变为3个β粒子,而一个β粒子可以裂变为1个α粒子和2个β粒子。若在t=0时刻的反应堆中只有一个α粒子,求在t秒时反应堆裂变产生的α粒子和β粒子数。 猴子吃桃。 据例3-1中求裴波那契数列的第40项与前40项之和的递推算法与迭代算法,写出完整的程序,并比较其运行结果。 实验原理 递推算法的基本思想是把一个复杂的庞大的计算过程转化为简单过程的多次重复,该算法充分利用了计算机的运算速度快和不知疲倦的特点,从头开始一步步地推出问题最终的结果。 顺推即从前往后推,从已求得的规模为1,2,…,i-1的一系列解,推出问题规模为i的解,直至得到规模为n的解: f(1—i-1)=初始值; // 确定初始值 for(k=i;k=n;k++) f(k)=递推关系式; // 根据递推关系实施顺推 print(f(n)); // 输出n规模的解f(n) 4.实验设备 PC机 5.实验步骤 理解算法思想和问题要求; 编程实现题目要求; 上机输入和调试自己所编的程序; 验证分析实验结果; 整理出实验报告。 6.实验结果 图3-1 递推求b数列结果图 图3-2 多幂序列结果图 图3-3 粒子裂变结果图 图3-4 猴子吃桃子结果图 图3-5 迭代算法求斐波那契数列结果图 图3-5 递推算法求斐波那契数列结果图 7.实验体会 这次实验,我学会了递归算法,将庞大复杂的计算转化为简单重复的多次计算。充分利用了计算机运算速度快和不知道疲倦的特点,递推算法注重通过递推归纳,将数字计算的规律通过算法实现,非常实用,递推算法在实现计算不等式和猴子吃桃子等问题上显得非常简单有效。 附:源程序 第一题源程序: #include stdio.h void main() { int k,n; long b[3000],s; printf( 请输入n: ); scanf(%d,n); b[1]=1;b[2]=2;s=3; for(k=3;k=n;k++) { b[k]=3*b[k-1]-b[k-2]; s+=b[k]; } printf( b(%d)=%ld \n,n,b[n]); printf( s=%ld \n,s); } 第二题源程序: #include stdio.h void main() {int k,m,t,p2,p3,p5; double a,b,c,s,f[100]; printf( 求数列的第m项与前m项和,请输入m: ); scanf(%d,m); f[1]=1;p2=0;p3=0;p5=0; a=2;b=3;c=5;s=1; for(k=2;k=m;k++) { if(ab ac) { f[k]=a;a=a*2; // 用2的幂给f[k]赋值 t=2;p2++; // t=2表示2的幂,p2为指数 } else if(ba bc) { f[k]=b;b=b*3; // 用3的幂给f[k]赋值 t=3;p3++; // t=3表示3的幂,p3为指数 } else { f[k]=c;c=c*5; // 用5的幂给f[k]赋值 t=3;p5++; // t=5表示5的幂,p5为指数 } s+=f[k]; } printf( 数列的第%d项为: %.0f ,m,f[m]); if(t==2)

文档评论(0)

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

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

1亿VIP精品文档

相关文档