递推递归练习 -A 母牛问题 / / E .兔子繁殖问题

来源:互联网 发布:手机远程桌面windows 编辑:程序博客网 时间:2024/04/30 23:58

DESCROPTION:

第一年,有一头牛成牛,每一年生一头小母牛,但是小母牛要在第四年才能长成 成牛,问第n年 一共有几头牛;

第一年有一头,第二年有两头,第三年 有四头,第四年 有四头,第五年 有6头 。
数组a[i] 代表 第 i 年的 总的牛数
 总结 第 i 年 的 牛数  是 i-1 的牛的 个数 加上 i-3 年前 牛的总个数      (因为 i-3)年的 所有的牛 在 第 i年都是 成 牛了。

code:

#if   1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
 cin>>n;
  int a[55];
 while(n!=0)
 {
 
  
 
  int i;
  a[1]=1;
  a[2]=2;
  a[3]=3;
  for(i=4;i<=n;i++)
  {
  
   a[i]=a[i-1]+a[i-3];
     }
  cout<<a[n]<<endl;
  
  cin>>n;
 }
 
 
}
#endif
尤其注意的是 罗列前三年的牛的个数,以及循环 开始的 年数 是从 i+3 开始的。

养兔子问题:

description:

第一年有一对兔子,第二年生下一对兔子,生下来的小兔子,要等一年 才能生育,且每一对兔子只能生一对,问 第 n年 有多少对兔子?(数据类型可以用64位整数:long long)

这个问题和 牛的 问题类似 ,第 i年的 兔子 的数量 等于 i-1年 兔子的数量 加上 i-2年兔子的 数量  (因为 在 第i-2 年所有的兔子在第 i年都可以生育)
#if 0                   
#include<iostream>
using namespace std;
int main()
{
long long int a[100];
 
 int n;
 while(cin>>n&&n!=0)
{
    
 a[1]=1;
 a[2]=2;
 
 for(int i=3;i<=n;i++)
 a[i]=a[i-1]+a[i-2];
 
 cout<<a[n]<<endl;
}
 return 0;
}
#endif













0 0