0:n3=n2+n1#第三項為前兩項和n1=n2#計算完,整體后移,準備計算下一項n2=n3n-=1returnn3a=int(input('請輸入要計算的斐波那契項數:'))result=fab(a)print('第%d項斐波那契數為%" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python學習031-----python之遞歸(二):斐波那契數列的實現

系統 1802 0

斐波那契數列:
1 ? ? 2 ? ? 3 ? ? 4 ? ? 5 ? ? 6 ? ? 7 ? ? 8 ? ? 9 ? ? 10? ?...
1 ? ? 1 ? ? 2 ? ? 3 ? ? 5 ? ? 8 ? ?13 ? 21 ? 34 ? ?55? ?...

1.用迭代實現斐波那契數列(非遞歸方法)

            
              def fab(n): ? 
?? ?n1 = 1 ? ? ?
?? ?n2 = 1 ? ? ?
?? ?n3 = 1 ? ? 

?? ?if n < 1: ? 
?? ??? ?print('輸入有誤!')
?? ?
?? ?while (n-2) > 0: ? ?
?? ??? ?n3 = n2 + n1 ? #第三項為前兩項和
?? ??? ?n1 = n2 ? ? ? ? ? ?#計算完,整體后移,準備計算下一項 ?
?? ??? ?n2 = n3 ? ? ? ? ? ?
?? ??? ?n -= 1 ? ? ? ? ? ? ?

?? ?return n3 ? ? ? ? ? ?

a = int(input('請輸入要計算的斐波那契項數:'))
result = fab(a)
print('第%d項斐波那契數為%d' % (a, result))
            
          

2.遞歸方法
?
原理:(樹形結構圖)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Fab(5)
? ? ? ? ? ? ? ? ? ? ? ? ? Fab(4) ? ? ? ? ? ? ? ? ? ? + ? ? ? ? ? ? ? ? ? ? Fab(3) ? ? ? ? ? ? ??
? ? ? ? ? ? ? Fab(3) ? ? + ? ? ?Fab(2) ? ? ? ? + ? ? ? ? ?Fab(2) ? ?+ ? ? ?Fab(1)
? ? ? Fab(2)+Fab(1)+Fab(1)+Fab(0) ?+ ?Fab(1)+Fab(0) ? ??
Fab(1)+Fab(0)

            
              def fab1(n):
?? ?if n < 1:
?? ??? ?print('輸入錯誤!')

?? ?if n == 1 or n == 2:
?? ??? ?return 1 ? ? ? ? ? ? ? #如果求的是第一或者第二項,直接結果為1
?? ?else:
?? ??? ?return fab1(n-1) + fab1(n-2)

a = int(input('請輸入要計算的斐波那契項數:'))
result = fab(a)
print('第%d項斐波那契數為%d' % (a, result))
            
          

經過比較,遞歸方法簡單,容易理解,但是會浪費大量的CPU資源,計算時間也比非遞歸方法長了相當多。非遞歸方法無非就是代碼稍微復雜一點點,但是計算時間卻很短,也幾乎不怎么占用CPU資源。這就是為什么不提倡使用遞歸方法的原因。
?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 邯郸市| 吉安市| 桐柏县| 哈尔滨市| 鹤庆县| 四平市| 济宁市| 澎湖县| 保靖县| 柘荣县| 潜山县| 唐海县| 海丰县| 温宿县| 岳普湖县| 鹤山市| 苏尼特右旗| 北川| 亚东县| 兴仁县| 承德市| 阳曲县| 玉屏| 邹平县| 石林| 望江县| 台东市| 徐水县| 古丈县| 阿拉善左旗| 保靖县| 茂名市| 彭山县| 岳西县| 湖口县| 凤山市| 罗江县| 双流县| 栾城县| 定西市| 昌乐县|