美文网首页
01.07 笔记 - 递归

01.07 笔记 - 递归

作者: xxxQinli | 来源:发表于2019-01-07 18:10 被阅读0次

    递归;实际开发的时候,能不用就不用

    1.什么是递归函数

    • 在函数中调用函数本身的函数就是递归函数

    2.递归的作用:循环能做的事情,递归都能做


    3. 怎么写递归函数,用递归来解决实际问题


    • 第一步:确定临界值 -> 循环结束的条件,在临界值的地方要让递归结束(return)

    • 第二步:找关系 - 找当次循环和上次循环的关系;找f(n)和f(n-1)的关系

    • 第三步:假设函数的功能已经实现,通过f(n-1)来实现f(n)的功能 return f(n-1)与f(n)的关系


    4.循环能做的事情不能使用递归做:

    • 使用循环,range(3)与range(3000)的内存消耗其实是差不多的,只是改变一个全局变量的值,但是内存消耗是差不多的

    • 使用递归,每递归一次,都在开辟一个新的内存空间,内存消耗特别大,额外开辟栈区间,当return后,又在不断的销毁内存空间,消耗cpu

    # 1 + 2 + 3 + 4 ... n
    # 使用递归
    def ql_sum(n): # n为临界值
        # 1. 找临界值
        if n == 1: # n == 1 为起始值,感觉也像递归结束的地方
            return 1
        # 2. 找f(n)与f(n-1)的关系
        """
        ql_sum(n):ql_sum(n-1)+n -> 关系
        """
        # 3. return f(n)与f(n-1)的关系
        return ql_sum(n-1)+n
    
    print(ql_sum(2500))
    
    # 练习:求佩波那契数列第n个值
    # 1,1,2,3,5,8,13,...
    def sequence(n):
        # 1.找临界值
        if n == 1 or n == 2:
            return 1
        # 2. 找f(n)和f(n-1)的关系
        """
        f(n) = f(n-1)+f(n-2)
        """
        # 3. return f(n)与f(n-1)的关系    
        return sequence(n-1) + sequence(n-2)    
    
    print(sequence(5))
    
    
    

    相关文章

      网友评论

          本文标题:01.07 笔记 - 递归

          本文链接:https://www.haomeiwen.com/subject/lmhprqtx.html