题目
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
思路
分析的方法:建立递推关系
定义:Total(n) = Total(n-1) + Able(n)
即今年的种群总数等于去年总数加上今年新生育的数目,那么知道Able(n)
就可以解出此题。
注意题目中说每头牛都是第4年生育,假设今年就是第4年,那么今年新生育的数目Able(n)
其实都是4年前那帮牛生的,也就说4年前的那帮牛有多少,今年就会新增多少新牛,所以其实Able(n) = Total(n-3)
,
于是递推关系就出来了:Total(n) = Total(n-1) + Total(n-3)
注意前3年不能由上述公式递归得到,所以就直接列出前3年的数目就行。
经验的方法:列举并归纳
把第1年到第8年的种群数目列举出来,然后可以发现下列递推式成立:
Total(n) = Total(n-1) + Total(n-3)
,
然后联想到熟悉的斐波那契数列,于是驾轻就熟。