1)函数实现
def get_list(a):
info = [1,1]
v1 = 1
v2 = 1
while True:
v3 = v1 + v2
if v3 > a:
break
v1 = v2
v2 = v3
info.append(v3)
return info
date = get_list(100)
print(date)
#2)递归实现
def func(a,b):
#1
#1
#2
#3
#5
#...
print(b)
if a+b<100:
func(b,a+b)
func(0,1)
PS:
在函数内部,可以调用其他函数。如果一个函数在内部调用自已本身,这个函数就叫做递归函数。上面我们写的这个代码就是递归
递归特性:
必须有一个明确的结束条件
每次进入更深一层递归时,问题规模相比上次递归都应有所减少
递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
面试题:
![](https://img2018.cnblogs.com/blog/1363327/201909/1363327-20190921194732895-1111689027.png)
count =0
num1=0
num2 =1
while num2 < 4000000:
# print(num2)
num1,num2 = num2,num1+num2
count+=1
print(num1,count)