用递归效率低是正常的,毕竟频繁的函数调用是要占据大量的时间空间。
如果该题不是一定要用递归算法的话,我给你个新的算法(肯定不会超时),但是代码我就不写了,因为很简单。
初始化 int cow_age[4] = {1, 0, 0, 0};分别代表出生1年、出生2年、出生3年、出生4年以后的母牛数目,最初有个出生1年的母牛(题目给出)。
然后设置循环变量i,i每自加一次就代表过一年,循环内容是
cow_age[3]+ = cow_age[2] //3岁的母牛长到了4岁
cow_age[2] = cow_age[1] //2岁的母牛长到了3岁
cow_age[1] = cow_age[0] //1岁的母牛长到了2岁
cow_age[0] = cow_age[3] //每个4岁以上的母牛生了一只1岁的小牛
总数就是 cow_age[0]+cow_age[1]+cow_age[2]+cow_age[3]。
理解应该没问题吧