day18_python

参考Eva_J的博客,原文连接:https://www.cnblogs.com/Eva-J/articles/7228075.html

# 递归常见错误
# 超过最大递归限制
# solve 递归必须要有结束条件
# 返回值
# slove 不要只看到return就认为返回了,要看返回操作是在递归的第几层的时候发生的,然后返回给了谁
# 如果不是返回给最外层函数,调用者就接收不到
# 需要再分析,看如何把结果返回回来
# 循环 ,几乎所有的递归可以用循环解决,快速排序需要用递归实习
# 斐波那契数列,第N个斐波那契数是?

两次递归

def fib(n):
    if n == 1 or n == 2:
        return 1
    else:
        return fib(n-1)+fib(n-2)  # 调用了两层,会使效率降低,尽量不用两层
    

print(fib(10))

一次递归

def fib(n, lis=[0]):
    lis[0] += 1
    if n == 1 or n == 2:
        lis[0] -= 1
        return 1, 1
    else:
        a, b = fib(n-1)  # 位置不能放在lis[0] -=1下面
        lis[0] -= 1
        if lis[0] == 0:
            return a+b
        return b, a+b


print(fib(50))

阶乘

def fac(n):
    if n == 1:
        return 1
    return n*fac(n-1)


print(fac(10))
# 常用模块
# 计算器
# re模块
# 正则表达式  字符串匹配
# re模块操作正则表达式
上一篇:day18 集合


下一篇:day18多线程