10多年的明水网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销的优势是能够根据用户设备显示端的尺寸不同,自动调整明水建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联公司从事“明水网站设计”,“明水网站推广”以来,每个客户项目都认真落实执行。
n=0时执行到了for i in range(2,n),这个range是个空列表[],故一次也不会进入for循环执行“ fibs.append(fibs[-1] + fibs[-2])”,,直接返回[1,1],故不报错
n=1返回[1]
n=2返回[1,1]
n=3及以上,进入for循环,fibs每次增加一个元素,其值为倒数第1个和倒数第2个元素之和
改为if ... elif...else可以如下:
def fib(n):
if n1:
return None
elif n == 1:
return [1]
elif n == 2:
return [1, 1]
else:
fibs = [1, 1]
for i in range(2, n):
fibs.append(fibs[-1] + fibs[-2])
return fibs
print (fib(10))
就是递归到什么时候该停下来。
比如斐波那契数列,1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n=2,n∈N*)。
可以看到他的规律为,第N个数的值为第N-1和第N-2个数的值之和。比如要求F(10),得先求F(9)和F(8),要求F(9)得先求F(8)和F(7)……如此递归下去,但是F(1)和F(2)的值始终是1,那n=1或者n=2就可以作为递归的终止条件。
def fib(n):
if n=2 :
return 1
else:
return fib(n-1)+fib(n-2)
python中使用全局变量不需要特意声明,在函数外部定义一个变量即可。
但如果要在函数内修改全局变量的值,必须使用global声明
global a
a=1
否则python会将a视为局部变量