斐波那契數列自第三個數開始,每個數均為之前兩個數的和。
至少有兩種方法來實現它。
最常見的利用迭代的方法,其核心思路是
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:
............self.history.append(self.history[-1] + self.history[-2])
........returnself.history[num]
if __name__ == '__main__':
....fib =Fibonaci()
....print(fib.calc(100))
....print(fib.calc(32))
....print(fib.calc(10000))
B. 用python循環解答 有數列2/3、4/5、6/9、10/15……求此數列前30項的和。
你可以使用 Python 的循豎賀棚環語句來解決這個問題。
首先,可以定義一個變數 sum 來記錄數列的和,並將其初始化為 0。然後,使拍兄用 for 循環迭代數列的前 30 項,並將每一項的值加到 sum 中。最後,輸出 sum 的值,就可以得到數列前 30 項的和了。
下面是一個示例代碼,它使用 Python 的循環語句來解決這個問題:
sum = 0 # 初始化 sum 為余則 0
# 迭代數列的前 30 項
for i in range(1, 31):
# 計算數列的第 i 項的值
value = (i * 2 + 1) / (i * 2 + 2)
# 將第 i 項的值加到 sum 中
sum += value
# 輸出數列前 30 項的和
print(sum)
運行上述代碼後,會在屏幕上輸出數列前 30 項的和。
C. python中的for i in range怎麼用
在Python編程中,"for i in range"是一個常用的控制結構,用於實現從一個整數開始到另一個整數(不包括該數)的序列迭代。這個結構的基本語法是:for i in range(a, b, c),其中a是起始值(默認為0),b是結束值(不包含),c是步長(默認為1)。讓我們通過幾個例子來直觀理解它的用法。
當使用for i in range(1, 101, 1),代碼會列印從1到100的所有整數,每次循環i會遞增1,直到達到100為止。這相當於一個計數器,逐個遍歷指定范圍內的數值。
例如,for i in range(3)會輸出0, 1, 2,這里的起始值是3的前兩個整數,步長是1,循環3次。
另一方面,如果我們嘗試反向計數,如for i in range(10, 0, -1),則會從10開始遞減到1,輸出序列是10, 9, 8, ..., 1。這里,步長為-1,意味著每次循環i都會減1。
總的來說,range函數是Python中實現序列迭代和控制循環次數的便捷工具。通過理解並靈活運用這個功能,我們可以輕松地編寫出高效的代碼。
D. python中的range函數
Python2.X range()函數可創建一個整數列表,一般用在for循環中。
Python3 range()函數返回的是一個可迭代對象,類型是對象,而不是列表類型,所以列印的時候不會列印列表。
Python3 list()函數是對象迭代器,可以把range()返回的可迭代對象轉為一個列表,返回的變數類型為列表。
Python2 range()函數返回的是列表。
Python range()函數語法
range(start, stop[,step])
參數說明:
start:計數從start開始,默認是從0開始;比如:range(5)等價於range(0,5)。
stop:計數到stop結束,但不包括stop;比如:range(0,5)是[0, 1, 2, 3, 4]沒有5。
step:步長,默認為1;比如:range(0,5)等價於range(0,5,1)。