描述
有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第 n 个月的兔子对数为多少?
输入描述:
键盘输入任意一个正整数 n,n 的范围为 [1, 20]
输出描述:
输出第 n 个月兔子的对数
示例1
输入:
1输出:
1
示例2
输入:
2输出:
1
示例3
输入:
3输出:
2
#include <iostream>
using namespace std;
int sum(int n)
{
if(n<=2)
{
return 1;
}else{
int a=1, b=1;
int sum=2;
for(int i=3; i<=n; i++)
{
sum = a+b;
b = a;
a = sum;
}
return sum;
}
}
int main() {
int n;
cin>>n;
cout<<sum(n)<<endl;
return 0;
}
定义一个sum函数,如果n为1或2时, 此时只有一对,输出1;
n大于2时,从3开始到n,使用for循环,sum=a+b;b=a;a=sum;依次循环,最终得到sum。
#include <iostream>
using namespace std;
int sum(int n)
{
if(n>0 && n<3)
return 1;
if(n<0)
return 0;
int s;
s = sum(n-1)+sum(n-2);
return s;
}
int main()
{
int n;
cin>>n;
cout<<sum(n)<<endl;
return 0;
}
再来一种方法:在解决n<0和n<3的情况后,对n>2的情况,使用s=sum(n-1)+sum(n-2);最终得到总数s。