zoukankan      html  css  js  c++  java
  • 如何实现斐波那契数列?

    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)
    
    
  • 相关阅读:
    浅谈生成全排列的4种方法
    UVA
    UVA
    UVA
    UVA
    MySQL索引篇
    MySQL事务篇
    MySQL架构篇
    Redis性能调优
    Redis分布式锁
  • 原文地址:https://www.cnblogs.com/hanfe1/p/11535506.html
Copyright © 2011-2022 走看看