题目1:求斐波那契数列的第n项。
斐波那契数列的定义:f(0)=0 f(1)=1 f(n)=f(n-1)+f(n-2)
教科书上反复用这个问题来讲解递归函数,并不能说明递归函数解法最适合这道题目,这种方法有很严重的效率问题(存在重复计算),需要一种实用的解法。 由下往上计算,根据f(1)和f(2)计算出f(3),由f(3)和f(2)计算出f(4),循环下去,直至计算出f(n)
基于循环
class Solution:
def Fibonacci(self, n):
# write code here
small=0
big=1
if n<=0:
return 0
if n==1:
return 1
for i in range(2,n+1):
sum_i=small+big
small=big
big=sum_i
return big
基于递归,(不太推荐,效率低,可能不能通过)
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n<=0:
return 0
elif n=