super 家养了一对刚出生的兔子 , 兔子出生第 3 月开始每月都会生一对小兔子 , 小兔子出生后同样第 3 月开始也会每月生一对兔子
super 想知道 如果兔子不死 n 月后家里会有多少对兔子
设计一个程序 : 输入 n, 输出兔子数量
(2<n<30)
样例输入 : 7
样例输出 :13
样例输入 : 12
样例输出 : 144
我的代码:
#include<iostream>
using namespace std;
int main(){
int n;
//一月兔,二月兔,三月及三月以上兔
int a[3]={1,0,0};//开始的兔子数量
int b[3]={0,0,0};
cout<<"请输入月份:";
cin>>n;
for(int i=2;i<=n;i++){
b[1]=a[0];
b[2]=a[1]+a[2];
b[0]=b[2];//兔到第三月之后立马开始繁殖
//更新兔子数量
for(int j=0;j<3;j++){
a[j]=b[j];
}
}
int sum=a[0]+a[1]+a[2];
cout<<"\n当前兔子数量:"<<sum;
return 0;
}
我一开始的错误代码:
#include<iostream>
using namespace std;
int main(){
int n;
int a[3]={1,0,0};//开始的兔子数量
int b[3]={0,0,0};
cin>>n;
for(int i=1;i<n+1;i++){
b[0]=a[2];
b[1]=a[0];
b[2]=a[1]+a[2];
//更新兔子数量
for(int j=0;j<3;j++){
a[j]=b[j];
}
}
int sum=a[0]+a[1]+a[2];
cout<<sum;
return 0;
}
ChatGPT写的代码:
#include <iostream>
using namespace std;
int main() {
int n;
cout << "请输入月份n:";
cin >> n;
int prevMonthCount = 1; // 上个月的兔子数量
int currentMonthCount = 1; // 当前月的兔子数量
for (int i = 3; i <= n; i++) {
int newRabbits = prevMonthCount; // 新出生的兔子数量等于上个月的兔子数量
int totalRabbits = prevMonthCount + currentMonthCount; // 当前月的兔子数量等于上个月的兔子数量加上新出生的兔子数量
prevMonthCount = currentMonthCount; // 更新上个月的兔子数量
currentMonthCount = totalRabbits; // 更新当前月的兔子数量
}
// 输出第n个月的兔子数量
cout << "第" << n << "个月的兔子数量为:" << currentMonthCount << endl;
return 0;
}
画的笔记: