求解一道Python程式設計題,求解一道Python程式設計題

2021-06-28 17:15:18 字數 1406 閱讀 8263

1樓:雁西樓

斐波那契數列自第三個數開始,每個數均為之前兩個數的和。

至少有兩種方法來實現它。

最常見的利用迭代的方法,其核心思路是

fib(n) = fib(n-1) + fib(n-2)

而在n<2時直接,沒有n-2,因此直接返回1:

def fib(num): return 1 if n<2 else fib(num-1) + fib(num-2)

這是一種很簡單的實現。在階梯數不大時,它很好用。當階梯數很大時,因為二次手迭代,會比較慢。因此,可以在計算中儲存中間值(1至n-1的階梯數)來減少計算量:

這種方式在計算階梯數10000時就可以保持不錯的效能。如果需要多次計算該數列,則可以利用物件來保持這個中間值列表,下列**中,fibonaci例項只計算未曾計算的階梯數,在重複呼叫時它更具優勢:

class fibonaci(object):

....history=[1, 1]

....def cacl(self, num):

........while len(self.history) <= num:

........return self.history[num]

if __name__ == '__main__':

....fib = fibonaci()

....print(fib.calc(100))

....print(fib.calc(32))

....print(fib.calc(10000))

2樓:阿剛燉蛋

你好!注:題目沒有提到過輸入引數小於1的情況,所以並未做處理。

希望對你有幫助!

3樓:匿名使用者

def fbi(num):

if num<2 :

return 1

else:

return fbi(num-1)+fbi(num-2)

大神,求解這道python程式設計題!十分感謝!

4樓:暗客默燭

題太長,還是英文,還是截圖沒有文字,不寫了

一道簡單的python程式設計題

5樓:匿名使用者

這個是典型的遞迴函式例子,你們老師給這個題目,一般是在講解遞迴函式之後。所以最好使用遞迴函式解題。

6樓:匿名使用者

這不就是for迴圈一直乘就好了

7樓:手機使用者

def key(n):

if n ==1:

return 1

else:

return n*key(n-1)

函式名字都隨便的啦 注意縮排

求解一道概率題,一道概率題,求解!

joe owns the brown car,也就是說其概率變成1,另外joe擁有blue和black的概率都變成0,且john和jim擁有brown car的概率也變成0。另外很重要的一點是每一行每一列的和都應該是1,這個不能變。carblue black brownjoe 0 0 1john x...

求解一道積分題思路,求解一道積分題

0,4 ln 1 tanx dx換元 專 4 t x 屬 4,0 ln 1 1 tant tant 1 dt 0,4 ln 2 tant 1 dt 0,4 ln2 0,4 ln tant 1 dt ln2 4 0,4 ln tanx 1 dx2 0,4 ln 1 tanx dx ln2 4所以 0,...

一道奧數題求解,一道奧數題,求解!

奧數,就是不能用太複製的方程改的了?設三元很容易,不設未知數,只能這樣改 15 60 400 12 60 500 60 600 6 所以加三次水後,含鹽百分比將變成6 原理是鹽水中的鹽量不變,只要分子一樣,就可以得出三次加水前後鹽水量的關係是400 500 600 根據這個原理可以輕鬆解題,不用方程...