本题需要用到递归的思想,因为考察蜜蜂数量与年数的关系,本质上是一个二阶递推数列,即由上一年的F与M数量来决定下一年的F与M的数量,转化为函数递归问题
在实际编程中,这里有两点需要提醒:
1.递归算法涉及到函数的嵌套调用,X函数与Y函数会相互嵌套,在X函数体内调用Y时,由于Y在之前还未被定义,所以需要在X函数前加上一个Y函数的函数声明,确保可以嵌套调用。
2.关于输入与输出,本人最开始采用定义了一个大数组来输入输出,但是提交后总是显示RE(一般原因为数组过小,或者数组过大)所以最好的方法是改为用一个无上限的循环来读入,同时输出,读一个输出一个,对于没有规定输入输出上限的题目,采用这种方法无疑是最为稳妥的。
#include <iostream>
using namespace std;
int Y(int i);
int X(int i)
{
if(i==0)return 0;
if(i==1)return 1;
else return X(i-1)+Y(i-1);
}
int Y(int i)
{
if(i==0)return 1;
if(i==1)return 1;
else return X(i-1)+1;
}
int main()
{
int a;
do{
cin>>a;
if(a==-1)break;
cout<<X(a)<<' '<<X(a)+Y(a)<<endl;
}while(1);
return 0;
}