牛客網 斐波那契數列 解題報告 python

2021-10-02 15:21:38 字數 1251 閱讀 1169

題目描述:

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項為0)。 

n<=39

解題方案:

首先就像用生成器的方法,但是這裡沒有太大的用。因為題目要求輸出第n個數,而不是輸出前n個數。不過還是採用了生成器的方法。

# -*- coding:utf-8 -*-

class solution:

def fib_loop_while(self, max):

a, b = 0, 1

while max > 0:

a, b = b, a + b

max -= 1

yield a

def fibonacci(self, n):

# write code here

result = self.fib_loop_while(n)

return next(result)

另外網上查詢的乙個有效方法,採用類實現內部魔法方法,定義迭代器。主要是實現iter()方法和next()方法。

class fibonacci(object):

"""斐波那契數列迭代器"""

def __init__(self, n):

""":param n:int 指 生成數列的個數

"""self.n = n

# 儲存當前生成到的資料列的第幾個資料,生成器中性質,記錄位置,下乙個位置的資料

self.current = 0

# 兩個初始值

self.a = 0

self.b = 1

def __next__(self):

"""當使用next()函式呼叫時,就會獲取下乙個數"""

if self.current < self.n:

self.a, self.b = self.b, self.a + self.b

self.current += 1

return self.a

else:

raise stopiteration

def __iter__(self):

"""迭代器的__iter__ 返回自身即可"""

return self

if __name__ == '__main__':

fib = fibonacci(15)

for num in fib:

print(num)

牛客網 斐波那契數列

題目 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項,n 39。斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,2...

牛客 斐波那契數列

大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 最後比較兩種方法雖然都是可以通過題目中的測試用例,但是使用遞迴方法的執行時間明顯比使用迭代方法的執行時間 原因 使用迭代的方法的時候重複計算,而且重複的情況還很嚴重,舉個例子,n 4,看看程...

py 斐波那契數列

usr bin python3 fibonacci series 斐波納契數列 兩個元素的總和確定了下乙個數 理解 每乙個新出現的值都是b,則原來b值成為a值。ps 注重對原有值的保留 直接解法 a,b 0,1 while b 10 print b a,b b,a b 其中 a,b b,a b 的計...