第1讲-递推与迭代课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第1讲-递推与迭代课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代课
- 资源描述:
-
1、1递推概述递推概述递推数列递推数列应用递推求解应用题应用递推求解应用题递推与递归比较递推与递归比较迭代及其应用迭代及其应用 2 2. 递推算法框架描述递推算法框架描述f(1i-1)=; /* 确定初始值确定初始值 */for(k=i;k=n;k+) f(k)=; /* 施递推施递推 */printf(f(n); /* 输出输出n规模的解规模的解f(n) */3(2) 简单逆推算法简单逆推算法 逆推即从后往前推逆推即从后往前推,从已得的规模为从已得的规模为n,n-1,i+1的一系列解,推出问题规模为的一系列解,推出问题规模为 i的解,直至的解,直至得到规模为得到规模为1的解。的解。 简单逆推算法
2、框架描述:简单逆推算法框架描述:f(ni+1)=f(ni+1)= ; / /* * 确定初始值确定初始值 * */ /for(k=i;k=1;k-)for(k=i;k=1;k-) f(k)= f(k)= ;/ /* * 实施递推实施递推 * */ /printf(f(1)printf(f(1); / /* * 输出解输出解f(1) f(1) * */ /4设递推的二维数组为设递推的二维数组为f(k,j)f(k,j),1kn,1jm1kn,1jm。二维数组顺推算法框架描述:二维数组顺推算法框架描述:f(1,1m)=f(1,1m)= ; / /* * 赋初始值赋初始值 * */ /for(k=2;
3、k=n;k+)for(k=2;k=n;k+)for(j=1;j=m;j+)for(j=1;j=m;j+) f(k,j)= f(k,j)= ; / /* * 实施递推实施递推 * */ /printf(f(n,m)printf(f(n,m); / /* * 输出解输出解f(n,m) f(n,m) * */ /5 当递推关系包含两个或两个以上关系式时,通常应用多关系当递推关系包含两个或两个以上关系式时,通常应用多关系分级递推算法求解。分级递推算法求解。(4 4) 多关系分级递推算法多关系分级递推算法f(1i-1)=f(1i-1)= ; / /* * 赋初始值赋初始值 * */ /for(k=i;k
4、=n;k+)for(k=i;k=n;k+) if( if()1) f(k)= f(k)=1; / /* * 据递推关系据递推关系1 1递推递推 * */ / if( if()2) f(k)= f(k)=2; / /* * 据递推关系据递推关系2 2递推递推 * */ / if( if()m) f(k)= f(k)=m; / /* * 据递推关系据递推关系m m递推递推 * */ /printf(f(n)printf(f(n); / /* * 输出解输出解f(n) f(n) * */ /61.2 递推数列(1) (1) 递推算法设计递推算法设计设置设置k k循环(循环(k=1,2,k=1,2,,
5、n n,其中,其中n n为输入整数),在为输入整数),在k k循环外赋初值:循环外赋初值:a=2;b=3;s=0;a=2;b=3;s=0;在在k k循环中比较赋值:循环中比较赋值:当当ababab时,由赋值时,由赋值fk=bfk=b确定为序列的第确定为序列的第k k项;然后项;然后b=bb=b* *3 3,即,即b b按递按递推规律乘推规律乘3, 3, 为后一轮比较作准备。为后一轮比较作准备。1.2.1 幂序列幂序列7递推过程描述:递推过程描述:a=2;b=3; a=2;b=3; * * 为递推变量为递推变量a,ba,b赋初值赋初值 * */ /for(k=1;k=n;k+)for(k=1;k
6、=n;k+) if(ab) if(ab) fk=a;a=a fk=a;a=a* *2;/2;/* * 用用a a给给fkfk赋值赋值 * */ / else else fk=b;b=b fk=b;b=b* *3;/3;/* * 用用b b给给fkfk赋值赋值 * */ / 在这一算法中,变量在这一算法中,变量a,ba,b是变化的,分别代表是变化的,分别代表2 2的幂与的幂与3 3的幂。的幂。nn81.2.2 双关系递推数列(1) (1) 算法设计要点算法设计要点设设n n个数在数组个数在数组m m中,中,2x+12x+1与与 3x+13x+1均作为一个队列,从均作为一个队列,从两队列中选一排头
7、两队列中选一排头( (数值较小者数值较小者) )送入数组送入数组m m中。所谓中。所谓“排头排头”就是队列中尚未选入就是队列中尚未选入m m的最小的数(下标)。的最小的数(下标)。这里用这里用p2p2表示表示2x+12x+1这一列的排头的下标,用这一列的排头的下标,用p3p3表示表示3x+13x+1这一列的排头的下标。这一列的排头的下标。9if(2if(2* *m(p2)3m(p2)3m(p2)3* *m(p3)m(p3) m(i)=3 m(i)=3* *m(p3)+1;p3+;m(p3)+1;p3+;特别注意:两队列若出现相等时,给特别注意:两队列若出现相等时,给m m数组赋值数组赋值后,两
8、排头都要增后,两排头都要增1 1。if(2if(2* *m(p2)=3m(p2)=3* *m(p3)m(p3) m(i)=2 m(i)=2* *m(p2)+1;m(p2)+1; p2+; p3+; p2+; p3+; / /* * 为避免重复项,为避免重复项,P2P2,p3p3均须增均须增1 1 * */ / 101.3.1 1.3.1 猴子爬山问题猴子爬山问题【例例1.41.4】 一个顽猴在一座有一个顽猴在一座有3030级台阶的小山上级台阶的小山上爬山跳跃,猴子上山一步可跳爬山跳跃,猴子上山一步可跳1 1级,或跳级,或跳3 3级,试级,试求上山的求上山的3030级台阶有多少种不同的爬法。级台
9、阶有多少种不同的爬法。1. 1. 递推算法设计递推算法设计一般地有递推关系:一般地有递推关系: f(k)=f(k-1)+f(k-3) f(k)=f(k-1)+f(k-3) (k3k3)初始条件有初始条件有: : f(1)=1 f(1)=1; 即即1=11=1。 f(2)=1f(2)=1; 即即2=1+12=1+1。 f(3)=2f(3)=2; 即即3=1+1+13=1+1+1;3=33=3。1.3 应用递推求解应用题11 int k,n; long f1000;int k,n; long f1000; printf( printf(请输入台阶总数请输入台阶总数n:);n:); scanf(%d
10、,&n); scanf(%d,&n); f1=1;f2=1;f3=2; f1=1;f2=1;f3=2; / /* * 数组元素赋初值数组元素赋初值 * */ / for(k=4;k=n;k+) for(k=4;k=n;k+) fk=fk-1+fk-3; fk=fk-1+fk-3; / /* * 按递推关系实施递推按递推关系实施递推 * */ / printf(s=%ld,fn); printf(s=%ld,fn);2. 算法描述算法描述: 123. 3. 问题引申问题引申把问题引申为爬山把问题引申为爬山n n级,一步有级,一步有m m 种跨法,一步跨多少级均种跨法,一步跨多少级均从键盘输入。从
11、键盘输入。(1(1) 分级递推算法设计分级递推算法设计设爬山设爬山t t台阶级的不同爬法为台阶级的不同爬法为f(t),f(t),设从键盘输入一步跨多少设从键盘输入一步跨多少级的级的m m个整数分别为个整数分别为x(1), x(2), , x(m)x(1), x(2), , x(m) ( (约定约定x(1)x(2)x(m)n)x(1)x(2)x(m)n)。这里的整数这里的整数x(1), x(2), , x(m)x(1), x(2), , x(m)为键盘输入,事前并不知为键盘输入,事前并不知道,因此不能在设计时简单地确定道,因此不能在设计时简单地确定f(x(1),f(x(2),f(x(1),f(x
12、(2),。事实上,可以把初始条件放在分级递推中求取,应用多关系事实上,可以把初始条件放在分级递推中求取,应用多关系分级递推算法(分级递推算法(6 6)完成递推。)完成递推。13 (2) 探讨探讨f(t)的递推关系的递推关系当当tx(1)tx(1)时,时,f(t)=0f(t)=0;f(x(1)=1f(x(1)=1。(初始条件)。(初始条件)当当x(1)tx(2)x(1)tx(2)时,第时,第1 1级递推:级递推:f(t)=f(t-x(1)f(t)=f(t-x(1);当当x(2)tx(3)x(2)tx(3)时,第时,第2 2级递推:级递推:f(t)=f(t-x(1)+f(t-f(t)=f(t-x(
展开阅读全文