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;
}