腾讯奶牛面试

TX面试题:

已知有一头牛4年后开始生小牛,一次只能生一只,问20年后
有多少头牛

这种问题明显具有递归性质:
这头奶牛在第四年后能不断生子直到第二十年,其子出生4年后又能不断生子,其子之子出生四年后又可以生子其实每头奶牛生子的特性是一样的:出生第4年开始生子,                     
每一年生一只,而子生子又生孙实际上就是一种递归,不断调用奶牛的生子特性

代码如下:


#include <stdio.h>
//递归函数
int func(int n)
{
  int sum=0;
  if(n<=3) return sum;
  //从第一年到第n年
  for(int i=1;i<=n;i++)
  {
    //如果年份大于等于4,牛开始生子,并递归计算其子之子
    if(i>=4)
    {
      sum++;
      sum=sum+func(n-i);
    }
  }
  return sum;
}


//主函数
int main()
{
int s;
s=func(20);//计算一头母牛20年生下的小牛
printf("%d",s+1);
return 0;
}

 

 

posted @ 2017-11-16 13:48  woz333333  阅读(347)  评论(0编辑  收藏  举报