题目描述
怪物牛,一对牛每月繁殖一对小牛,每一对小牛在出生以后,需要三个月的时间生长,第四个月开始繁殖。
要求:计算初始数量为m对牛对情况下,第n个月牛的总数(对)
输入:第一行为n,表示有n组数据,之后对每行为每组数据
输出:结果,每组结果占一行
思路
按照题目描述来,关键是递归的条件,其实没有想象中复杂哦,虽然做了很久。
代码
/*
* main.c
*
* Created on: 2019年7月31日
* Author: PENNY
*/
#include "stdio.h"
int cal_n_month_late_cow_number(int m_cow,int n_month)
{
int cow_sum=0;
if(n_month<=4)
{
cow_sum = m_cow*(n_month+1);
}
if(n_month>4)
{
cow_sum = m_cow*n_month+cal_n_month_late_cow_number(m_cow,n_month-3);
}
return cow_sum;
}
int main()
{
int test_num,results;
int i;
int m_cow[100]={0}; //100为最多可以有多好组测试数据,牛的数量
int n_month[100]={0}; //多少个月
printf("please enter test data number:");
scanf("%d",&test_num);
//对多组数据输入的处理,这里要利用到之前输入的test_num
printf("请输入 cow_number month_number \n");
for(i=0;i<test_num;i++)
{
scanf("%d %d",m_cow+i,n_month+i);
}
for(i=0;i<test_num;i++)
{
results = cal_n_month_late_cow_number(m_cow[i],n_month[i]);
printf("cow_sum %d\n",results);
}
return 0;
}
总结
注意的事情,一个是临界条件,一个是递归的方式,抓住主要矛盾!