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)
函式名字都隨便的啦 注意縮排
求解一道c 程式設計題,求解一道簡單的C語言程式設計題
麼誒節奏 include using namespace std int search int p1,int n,int p2 void print int p,int n int main int arr1 10 int arr2 int count search arr1,10,arr2 pri...
C語言積極求解,一道C語言程式設計題求解
1.若以下選項中的變數已正確定義,則正確的賦值語句是 a x1 26.8 3 b 1 2 x2 c x3 0x12 d x4 1 2 3 2.下面給出的識別符號中,能作為變數名的是 d a for b 123 c int d a b 中間一橫線在下面 3.c語言中,運算物件必須是整形數的運算是 c ...
求解一道會計題,一道會計題目,求解!!
葉秋葉秋葉秋 您好,管理費用應該是31200,分錄如下 借 管理費用 職工工資 30000 保險費 600 折舊費 600 預付賬款 2400貸 應付職工薪酬 30000 累計折舊 600 銀行存款 3000 希望對你有幫助 小斯陶 管理費用 30000 2400 6 600 31000元因為,1 ...