经典算法题之兔子问题

经典算法题之兔子问题,第1张

可以这样思考:第一个月后即第二个月时,1对兔子变成了两对兔子,其中一对是它本身,另哪亏一对是它生下的幼兔. 第三个月时两对兔子变成了三对,其中一对是最初的一对,另一对是它刚生下来的幼兔,第三对是幼兔长成的大兔改缓运子. 第四个月时,三对兔子变成了五对,第五个月时,五对兔子变成了八对······这组数从三个数开始,每个数是两个数的和,按此方法推算,第六个月是13对兔子,第七个月是21对兔子……,裴波那契得到一个数列,人们将核梁这个数列前面加上一项1,成为“裴波那契数列”,即:1,1,2,3,5,8,13…数列用﹛an﹜表示有a1=a2=1,a(n+1)=an=a(n-1) (n≧2)。通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}。

斐波纳契数列还暗含着许多有趣的数字规律,如从第3个数开始每隔两个必是2的倍数,从第4个数开始每隔3个必是3的倍数,从第5个数开始每隔4个必是5的倍数……另外,这个数列最具有和谐之美的地方是,越往后,相邻两项的比值会无限趋向于黄金比0.61803……即[5^(1/2)-1]/2。

#include <stdio.h>

main()

{

int i,tu1,tu2,tu3,m

tu1=1

tu2=1

pringf("请输入月份数(要求不大于24)")

scanf("%d",&m)

if(m==1||m==2)

{

printf("有一对兔子"基禅败);

}

else if(m<2&&m<=24)

{

for(i=3i<=mi++)

{

tu3=tu1+tu2

tu1=tu2

tu2=tu3

}

printf("袭差%d月的兔子数为#d\n",m,tu3)

}

else

{

printf("月份书输入不符合要求搏颤,程序结束\n")

}

}

我们老师都讲这题了~


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12254057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存