- 0
- 0
- 约2.4千字
- 约 21页
- 2026-03-10 发布于广西
- 举报
第07课;学习目标;知识讲授;递推是一种处理问题的重要方法。递推通过对问题的分析,找到问题相邻项之间的关系(递推式),从起点出发(首项或者末项)然后使用循环不断地迭代,得到最后需要的结果。
;对于Fibonacci数列:
已知:fib(1)=1;fib(2)=1;从第三项开始满足公式:
fib(i)=fib(i-1)+fib(i-2)。
输入一个整数n(1=n=100),求fib(n)的值。;问题求的是斐波那契数列第i项的数值。
前两项的数值,题目中已经给出,分别为:
fib(1)=1;fib(2)=1;
从第3项开始,满足如下规律:fib(i)=fib(i-1)+fib(i-2);
即当前项由前两项之和构成。
我们可以根据题目给出的fib(1)、fib(2)推出fib(3),再按照顺序由fib(2)、fib(3)推出fib(4),以此类推。;#includebits/stdc++.h
usingnamespacestd;
intmain()
{
longlongn,f1,f2,f3;
cinn;
f1=f2=f3=1;//初始化,f3表示第n项
for(longlongi=3;i=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
coutf3;
return0;
};递推分析实例;问题分析;我们能够发现,从第3个月起,每个月的兔子数量都等于:
(上个月的兔子数量)+(2个月前的兔子数量)。
因为2个月前的兔子,在当前月份时都已成熟,每对兔子都可以增加一对小兔子。
抽象分析:
设第n个月的兔子为f(n),第n个月成熟兔子为g(n),第n个月新生的兔子为x(n);
那么f(n)=g(n)+x(n)
又∵g(n)=f(n-1),x(n)=g(n-1)=f(n-2)
∴f(n)=f(n-1)+f(n-2);#includebits/stdc++.h
usingnamespacestd;
intmain()
{
longlongn,f1,f2,f3;
cinn;
f1=f2=f3=1;//初始化,f3表示第n项
for(longlongi=3;i=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
coutf3;
return0;
};课堂练习;【描述】科学家发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵(当月不能产卵),每对卵要过3个月长成成虫。假设每个成虫不死,第一个月有一对成虫,问第z个月有多少对成虫。
【输入】1行3个整数,x,y,z
【输出】1行;第z个月的成虫数量;设第n个月的成虫为f(n),第n个月已经有的老成虫为g(n),第n个月新成虫为t(n),第n个月新增卵为L(n),那么:
f(n)=g(n)+t(n)
g(n)=f(n-1)(老成虫和上一个月的所有成虫数量相等)
t(n)=L(n-3)(新成虫由3个月前的新卵长成)
L(n)=y*f(n-x)(新增卵由x月前的成虫生下,每对虫生y对卵)
所以:L(n-3)=y*f(n-3-x)
f(n)=f(n-1)+L(n-3);L(n)=y*f(n-x);或者化简为下式:
f(n)=f(n-1)+y*f(n-3-x);n-3-x>=1,n=x+4;
从1到x+3个月的成虫需要我们初始化为1(过x个月产卵,再过3个月才变成虫);#includebits/stdc++.h
usingnamespacestd;
longlonga[101],b[101];
//a[i]表示第i个月的成虫数
//b[i]表示第i个月新增的虫卵
intmain(){
intx,y,z;
cinxyz;
for(inti=1;i=x;i++)a[i]=1,b[i]=0;
for(inti=x+1;i=z;i++){
b[i]=y*a[i-x];//第i个月新增虫=i-x个月的成虫数量*产卵数
a[i]=a[i-1]+b[i-3];
}
couta[z];
return0;
};【描述】楼梯有n(1=n=100)阶台阶,上楼时可以一步上1阶,也可以一步上2阶,编程计算共有多
您可能关注的文档
- C++编程《第001课 初识C++》教学设计.docx
- C++编程《第001课 初识C++》教学课件.pptx
- C++编程《第002课 变量和数据类型(1)》教学课件.pptx
- C++编程《第002课 变量和数据类型(1)》教学设计.docx
- C++编程《第003课 变量和数据类型(2)》教学设计.docx
- C++编程《第003课 变量和数据类型(2)》教学课件.pptx
- C++编程《第004课 选择与分支(1)》教学课件.pptx
- C++编程《第004课 选择与分支(1)》教学设计.docx
- C++编程《第005课 选择与分支(2)》教学课件.pptx
- C++编程《第005课 选择与分支(2)》教学设计.docx
- 卢克文260309:穆杰塔巴当选伊朗最高领袖,有什么影响?.pdf
- 计算机:GPT-5.4:执行型AI加速落地,OpenClaw绝佳搭档.pdf
- XPeng Inc. (XPEV_9868.HK)_ 小鹏汽车股份有限公司(XPEV_9868.HK)_VLA 2.0试驾体验——无干预下平稳行驶1小时以上;买VLA 2.0 test drive experience - smooth 1h+ ride without intervention; Buy.pdf
- 具身智能行业研究:两会热议具身智能浪潮,银河通用再获25亿融资.pdf
- 华创证券-Skills推荐与实战应用:量化看市场系列之六:OpenClaw金融行业必备-260309-26页.pdf
- 锂电产业链双周报(2026年3月第1期):比亚迪发布第二代刀片电池,欧盟发布工业加速法案提案.pdf
- 绿色数据中心行业洞察对算力行业的一点思考.pdf
- 数字化2026 中国(英)-Meltwater-2026-123页.pdf
- 特朗普效应:美国和中国如何推动亚洲工厂的外国直接投资演变(英)-牛津经济研究院-2026-28页.pdf
- 家电行业周报:OpenClaw现象级火爆,AI NAS渗透率有望加速提升.pdf
原创力文档

文档评论(0)