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

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













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值