机器人的成熟期是三天,在成熟期每天可以自我复制,求第n天机器人的数量
第一天 | 第二天 | 第三天 | 第四天 | 第五天 | 第六天 |
1 | 2 | 3 | 4 | 6 | 9 |
递归:
#include<iostream>
using namespace std;
int fac(int n) {
if (n == 1)
return 1;
if (n == 2)
return 2;
if (n == 3)
return 3;
if (n > 3)
return fac(n - 1) + fac(n - 3);
}
int main()
{
int n, s;
cin >> n;
s = fac(n);
cout << s;
return 0;
}
非递归:
#include<iostream>
using namespace std;
int a[100] = { 0 }, b[100] = { 0 };//a[]存放已成熟,b[]存放新复制的
int main()
{
int n, s;//第n天,总共s个机器人
for (int i = 1; i <= 3; i++) {
a[i] = 1; b[i] = 1;
}b[1] = 0;//我认为第一天是投入第一台机器人,好像也不能这么讲
cin >> n; //自己理解把,反正计算是没问题
if(n>=4)
for (int i = 4; i <= n; i++) {//计算
a[i] = a[i - 1] + b[i - 3];
b[i] = a[i];
}
s = b[n] + b[n - 1] + b[n - 2] + a[n];//算出总的机器人数量
cout << s;
return 0;
}