兔子产子问题
兔子产子问题:
有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
根据题意列出表格:
根据表格分析出第一,二月兔子总数为1,从第三月开始兔子总数等于该月前面两个月兔子总数之和。
解题思路:
运用数组的知识,给a[1]以及a[0]赋值,利用a[i]=a[i-1]+a[i-2]算出每个月的总数,数组的下表等于月数减1,按照规定的格式输出每月的总数即可。
代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[30]={1,1};//前两个月总数赋值
cout<<setw(12)<<a[0]<<setw(12)<<a[1];//按格式输出前两个月总数
int temp=2;//记录数据来输出换行
for(int i=2;i<30;i++)//根据前两个月总数求每月总数
{
a[i]=a[i-1]+a[i-2];
temp++;
cout<<setw(12)<<a[i];
if(temp%4==0)
{
cout<<endl;
temp=0;
}
}
return 0;
}
解题思路:
利用迭代法求出每个月的总数并直接输出
代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int f1=1,f2=1,f;
cout<<setw(12)<<f1<<setw(12)<<f2;
for(int i=3;i<31;i++)
{
f=f1+f2;
cout<<setw(12)<<f;
f1=f2;
f2=f;
if(i%4==0)
cout<<endl;
}
return 0;
}
拓展:
仅利用f1与f2来储存月份的兔子总数
代码:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int f1=1,f2=1;
for(int i=1;i<16;i++)
{
cout<<setw(12)<<f1<<setw(12)<<f2;
f1=f1+f2;
f2=f1+f2;
if(i%2==0)
cout<<endl;
}
return 0;
}
该题体会:利用数组可以储存数据在需要时利用,学会了迭代法的利用以及如何改善迭代法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)