如何实现斐波那契数列?

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)

posted @ 2019-09-17 17:18  hanfe1  阅读(242)  评论(0编辑  收藏  举报