"""
title:面試題10- i. 斐波那契數列
introduce:
寫乙個函式,輸入 n ,求斐波那契(fibonacci)數列的第 n 項。斐波那契數列的定義如下:
f(0) = 0, f(1) = 1
f(n) = f(n - 1) + f(n - 2), 其中 n > 1.
斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
示例 1:
輸入:n = 2
輸出:1
示例 2:
輸入:n = 5
輸出:5
0 <= n <= 100
"""from functools import lru_cache
# class solution:
# @lru_cache(none)
# def fib(self, n: int) -> int:
# num = [0, 1]
# while n > 1:
# num[0] = num[0] + num[1]
# num[1] = num[0] + num[1]
# n = n - 2
# if n == 0:
# return num[0] % 1000000007
# else:
# return num[1] % 1000000007
# class solution:
# def fib(self, n: int) -> int:
# num = [0, 1]
# for i in range(2, n+1):
# return num[n] % 1000000007
class solution:
def fib(self, n: int) -> int:
num_01 = 0
num_02 = 1
temp = 0
if n == 0:
return n
elif n == 1:
return n
else:
for i in range(2, n+1):
temp = num_01 + num_02
num_01 = num_02
num_02 = temp
return num_02 % 1000000007
if __name__ == "__main__":
a = solution()
n = 6
print(a.fib(n))
面試題10 I 斐波那契數列
寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007 如計算初...
劍指offer 面試題10 I 斐波那契數列
動態規劃解析 狀態定義 設 dpdp 為一維陣列,其中 dp i dp i 的值代表 斐波那契數列第 ii 個數字 轉移方程 dp i 1 dp i dp i 1 dp i 1 dp i dp i 1 即對應數列定義 f n 1 f n f n 1 f n 1 f n f n 1 初始狀態 dp 0...
劍指Offer 面試題10 I 斐波那契數列
寫乙個函式,輸入 n 求斐波那契 fibonacci 數列的第 n 項。斐波那契數列的定義如下 f 0 0,f 1 1 f n f n 1 f n 2 其中 n 1.斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。答案需要取模 1e9 7 1000000007 如計算初...