c语言初级递归问题,母牛的故事

就是母牛生母牛的题目,为什么解析里第8年的时候f8等于19,4年前可用小牛为f4=4,应该是第七年的13加上第四年的4再加一头老母牛等于18,目前就这个点不太懂,求求大佬救救我。

img

img

img

递归类问题,能从前几项找到规律就可以了,n越大的时候,计算也复杂,容易绕晕了。在这个题目里,前7年的规律如下:
第1年:1
第2年:2
第3年:3
第4年:4
第5年:5+1=6
第6年:6+2+1=9
第7年:7+3+2+1=13
从这个规律里,能够得出f(n)=f(n-1)+f(n-3)的计算公式。到这里就够用了。
至于你计算出来的18,是因为,在第8年的时候,第1头母牛在第5年生的小牛也可以生小牛了,你把这个给漏了。也就是上面说的,当n越大的时候,越容易绕晕,所以,这种递归计算到6项左右就够用了。

我们分析得到 fn = fn-1 + fn-3,那么第八年f8应该等于 f7(8-1) + f5(8-3) = 13 + 6 = 19。 没问题呀
你应该看错数字了吧

第4个年头就可以生小牛了,而不是要从生下来再等4年,所以应该加上第5年的6,而不是第4年的4

这个题目和一对兔子生兔子的题目类似,
1:[A]
2:[A], AA
3: [A], AA, AB
4: [A], AA, AB, AC
5: [A], [AA], AB, AC, AD, AAA
6: [A], [AA], [AB], AC, AD, AE, AAA, AAB, ABA
7: [A], [AA], [AB], [AC], AD, AE, AF, AAA, AAB, AAC, ABA, ABB, ACA
8: [A], [AA], [AB], [AC], [AD], AE, AF, AG, [AAA], AAB, AAC, AAD ABA, ABB, ABC, ACA, ACB, ADA, AAAA

注:加方括号的代表具备生育能力, AAB是AA的直系后代
这道题适合用递归算法解决

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632