斐波那契數列是一種常見的數列,其滿足下面兩個條件
f0=f1=1
fn=fn-1+fn-2
## 斐波那契數列求解
def fib1(n):
if n < 2:
return 1
return fib1(n-1) + fib1(n-2)
### 不適用遞迴
```python
def fib2(n):
f1 = f2 = 1
for i in range(1, n):
f1, f2 = f2, f1+f2
return f2
## 兩種演算法比較
使用遞迴的演算法時間o(1.618^n)
不適用遞迴的演算法o(n)
```python
import time
# 使用遞迴
def fib1(n):
if n < 2:
return 1
return fib1(n-1) + fib1(n-2)
# 不使用遞迴
def fib2(n):
f1 = f2 = 1
for i in range(1, n):
f1, f2 = f2, f1+f2
return f2
start_time = time.time()
print('fib1:', fib1(40))
end_time = time.time()
print('fib1:', end_time-start_time)
start_time = time.time()
print('fib2:', fib2(40))
end_time = time.time()
print('fib2:', end_time-start_time)
執行結果
```python
fib1: 165580141
fib1: 34.63041615486145
fib2: 165580141
fib2: 0.0
Matlab求解斐波那契數列
下面是乙個matlab的指令碼函式,用於求解菲波那切數列,而且可以判斷輸入是否符合實際情況 function fibona n 斐波那契數列,前兩項之和等於第三項 f n f n 1 f n 2 第一項和第二項分別都是1 f 1 1,f 2 1 程式主題 if n 3 disp n warning ...
10 求解斐波那契數列
寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007 如計算初...
怎樣求解斐波那契數列
若有乙隻兔子,它每個月生乙隻小兔子,而小兔子乙個月後也開始生產。起初只有乙隻兔子,乙個月後就有兩隻兔子,兩個月後就有三隻兔子,三個月後有五隻兔子,以此類推,12 個月後有多少只兔子?實現 如下 第乙個月是1個大兔子 1 第二個月是1個大兔子,1個小兔子 2 第三個月是2個大兔子,1個小兔子 3 第四...