剑指 Offer 10- I. 斐波那契数列
题目要求:
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:
- F(0) = 0, F(1) = 1
- F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
解题思路:
把特殊条件排除掉,按照规律,迭代求值即可。
题解代码:
class Solution:
def fib(self, n: int) -> int:
#当n为0时,返回0
if n == 0:
return 0
#当n为1时,返回1
if n == 1:
return 1
#当n大于1时,循环求值
##设置斐波那契(Fibonacci)数列的第 n 项的初值为0
nums = 0
##最开始的两项值
F0 = 0
F1 = 1
#循环叠加
while n != 1:
nums = F0 +F1
n -=1
F0 = F1
F1 = nums
#返回第n项
return nums%1000000007
(“The goal is not always meant to be reached, but to serve as a mark for our arm.(目标不一点总会实现,它可以作为我们的新向标。)
”FIGHTING. . . .)