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

递推和迭代技术方案.pptx

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
递推和迭代 迭代 迭代法也称辗转法,是一种不断用变量的旧值推出新值的过程。它是解决问题的一种基本方法,通过让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。 迭代算法的基本思想 为求一个问题的解x,可由给定的一个初值x0,根据某一迭代公式得到一个新的值x1,这个新值x1比初值x0更接近要求的值x;再以新值作为初值,即:x1→x0,重新按原来的方法求x1,重复这一过程直到 |x1-x0|ε(某一给定的精度)。此时可将x1作为问题的解x。 迭代算法所需工作 确定迭代变量 建立迭代关系式 对迭代过程进行控制 迭代算法结构 迭代变量赋初值; while (迭代终止条件) { 根据迭代表达式,由旧值计算出新值; 新值取代旧值,为下一次迭代做准备; } 【实例2-1】小李的银行存款 小李年初在银行存款1000元(一年定期)。他计划每年年底取出100元救助失学儿童。假设银行的存款利率不变,年利率为3%,年底利息自动计入本金。计算n年后,该账户上有多少存款。 【实例2-2】位平方和 把一个整数的每个数位都平方后求和,又得到一个整数,称这个整数为:位平方和。对新得到的整数继续这一运算过程… … 举例,给定整数4,则一系列结果为16,37,58,… 【实例2-3】求平方根 用迭代法求某个数a的平方根。已知求平方根的迭代公式为: 编程思路 先自定一个初值x0,作为a的平方根值,例如,取a/2作为x0的初值。利用迭代公式求出一个x1。此值与真正的a的平方根值相比,误差可能很大。 把新求得的x1代入x0中,准备用此新的x0再去求出一个新的x1。 利用迭代公式再求出一个新的x1的值,也就是用新的x0又求出一个新的平方根值x1,此值将更趋近于真正的平方根值。 比较前后两次求得的平方根值x0和x1,如果它们的差值小于指定的值(如0.000001),即达到要求的精度,则认为x1就是a的平方根值,执行步骤5;否则执行步骤2,即循环进行迭代。   迭代结束,输出结果x1。 递推 递推,是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果。 其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简后确定。 递推算法求思路 当n=1时,解或为已知,或能方便地求得; 通过采用递推法构造算法的递推性质,能从已求得的规模为1、2、…、i−1的一系列解,构造出问题规模为i的解。 这样,程序可从i=0或i=1出发,重复地由已知至i−1规模的解,通过递推,获得规模为i的解,直至获得规模为n的解。 递推算法求解的问题的特点: 问题可以划分成多个状态 除初始状态外,其它各个状态都可以用固定的递推关系式来表示 递推算法求解所需工作 确定递推变量 建立递推关系 确定初始(边界)条件 对递推过程进行控制 递推法分类 递推法从递推方向可分为顺推与倒推。 顺推法是从已知条件出发,通过递推关系逐步推算出要解决的问题的结果的方法。 倒推法,就是在不知初始值的情况下,经某种递推关系而获知了问题的解或目标,从这个解或目标出发,采用倒推手段,一步步地倒推到这个问题的初始情况。 顺推是从条件推出结果,倒推从结果推出条件。 顺推算法结构 for (k=1; k=i−1; k++) f[k]= 初始值; // 按初始条件,确定初始值 for (k=i; k=n; k++) f[k]= 递推关系式; // 根据递推关系实施递推 coutf[n]; // 输出n规模的解f(n) 倒推算法结构 for (k=n; k=i+1; k--) f[k]= 初始值; // 按初始条件,确定初始值 for (k=i; k=1; k--) f[k]= 递推关系式; // 根据递推关系实施递推 coutf[1]; // 输出问题的初始情况f(1) 【实例2-4】马的行走路径 设有一个n*m的棋盘(2=n=50,2=m=50),在棋盘上任一点有一个中国象棋马。马行走的规则为: (1)马走日字; (2)马只能向右走,即如图所示的4种走法。 编写一个程序,输入n和m,找出一条马从棋盘左下角(1,1)到右上角(n,m)的路径。例如:输入n=4、m=4时,输出路径 (1,1)-(2,3)-(4,4)。这一路经如图所示。若不存在路径,则输出No! 编程思路 先将棋盘的横坐标规定为i,纵坐标规定为j,对于一个n×m的棋盘,i的值从1到n,j的值从1到m。棋盘上的任意点都可以用坐标(i,j)表示。 对于马的移动方法,用变量k来表示四种移动方向(1、2、3、4);而每种移动方法用

文档评论(0)

富贵礼包 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档