01.07 笔记 - 递归

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

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 笔记 - 递归)