兔子繁殖問題
類型:簡單循環(huán)
????????????????????????????????????????????????????????????????????????????????????????????????????????????????
描述????????????????????????????????????????????????????????????????????????????????????????????????????????????????
古典問題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,用戶輸入一個(gè)月份數(shù),計(jì)算并在一行內(nèi)輸出該月的兔子總對(duì)數(shù)以及前一個(gè)月與該月兔子數(shù)量的比值(計(jì)算并觀察一下這個(gè)比值的數(shù)值是多少),比值結(jié)果保留小數(shù)點(diǎn)后3位,數(shù)字間用空格分隔。????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸入格式????????????????????????????????????????????????????????????????????????????????????????????????????????????????
一個(gè)大于2的正整數(shù)????????????????????????????????????????????????????????????????????????????????????????????????????????????????
輸出格式????????????????????????????????????????????????????????????????????????????????????????????????????????????????
在一行內(nèi)輸出兩個(gè)數(shù),數(shù)之間用空格隔開。第一個(gè)是整數(shù),表示本月的兔子的對(duì)數(shù),第二個(gè)是浮點(diǎn)數(shù)(嚴(yán)格保留小數(shù)點(diǎn)后三位),表示前一個(gè)月兔子數(shù)與本月兔子數(shù)的比值。????????????????????????????????????????????????????????????????????????????????????????????????????????????????
示例????????????????????????????????????????????????????????????????????????????????????????????????????????????????文章來源:http://www.zghlxwxcb.cn/news/detail-512218.html
輸入:5
輸出:5 0.600
t=eval(input())
c=0
a = 1
b = 1
if t==1:
print("{} {:.3f}".format(1,0))
elif t==2:
c=1
print("{} {:.3f}".format(1,a/c))
else:
for i in range(3,t+1):
c=a+b
a = b
b = c
print("{} {:.3f}".format(c,a/c))
?文章來源地址http://www.zghlxwxcb.cn/news/detail-512218.html
# 分析:
# 第1個(gè)月兔子數(shù)為1對(duì),第2個(gè)月1對(duì),第3個(gè)月新出生1對(duì)(共2對(duì)),第4個(gè)月再出生1對(duì)(共3對(duì)),第5個(gè)月出生2對(duì)(共5對(duì)),
# 第6個(gè)月出生3對(duì)(共8對(duì)),第7個(gè)月出生5對(duì)(共13對(duì)),第8個(gè)月出生8對(duì)(共21對(duì))
# 得到如下數(shù)列:1,1,2,3,5,8,13,21...
# 尋找規(guī)律:從第3項(xiàng)開始,每一項(xiàng)都等于前2項(xiàng)之和
# 在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:F(0)=0,F(xiàn)(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
# 每次遍歷時(shí)a,b值的變化如下:
# 1,1,2,3,5,8,13,21,34,55...
# a,b
# 1,1,2,3,5,8,13,21,34,55...
# a,b
# 1,1,2,3,5,8,13,21,34,55...
# a,b
# 1,1,2,3,5,8,13,21,34,55...
# a,b
# 1,1,2,3,5,8,13,21,34,55...
# a,b
month = int(input()) # 輸入整數(shù)的月份
a, b = 1, 1 # a,b分別指向前兩個(gè)月的兔子數(shù)量
for i in range(3, month + 1): # 遍歷從3到輸入的月份數(shù),每遞推一次,把a(bǔ),b依次指向后面一個(gè)月的兔子數(shù)量
a, b = b, a + b # a + b 為前兩個(gè)月兔子數(shù)的加和,為當(dāng)前月份兔子數(shù),每遞推一次,
print(f' {a / b :.3f}')
到了這里,關(guān)于兔子繁殖問題----Python的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!