如何实现斐波那契数列?

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)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)


猜你喜欢

转载自www.cnblogs.com/hanfe1/p/11535506.html