zoukankan      html  css  js  c++  java
  • 函数递归、内置函数

    1 什么是函数递归
    函数递归调用(是一种特殊的嵌套调用):在调用一个函数的过程中,又直接或间接地调用了该函数本身

    递归必须要有两个明确的阶段:
    递推:一层一层递归调用下去,强调每进入下一层递归问题的规模都必须有所减少
    回溯:递归必须要有一个明确的结束条件,在满足该条件时结束递推
    开始一层一层回溯

    递归的精髓在于通过不断地重复逼近一个最终的结果

    2、为什么要用函数递归


    3、如何用

    import sys
    sys.getrecursionlimit()
    sys.setrecursionlimit(2000)
    
    def f1(n):
        print('from f1',n)
        f1(n+1)
    f1(1)
    

     

    # 间接调用
    # def bar():
    # print('from bar')
    # foo()
    #
    # def foo():
    # print('from foo')
    # bar()
    #
    # foo()

    # 递归分为两个阶段
    #1、回溯:
    # 注意:一定要在满足某种条件结束回溯,否则的无限递归
    #2、递推

    # 总结:
    #1、递归一定要有一个明确地结束条件
    #2、没进入下一次递归,问题的规模都应该减少
    #3、在python中没有尾递归优化

    内置函数:

    print(abs(-1))
    print(all([1,'a',True])) # 列表中所有元素的布尔值为真,最终结果才为真
    print(all('')) # 传给all的可迭代对象如果为空,最终结果为真

    print(any([0,'',None,False])) #列表中所有元素的布尔值只要有一个为真,最终结果就为真
    print(any([])) # 传给any的可迭代对象如果为空,最终结果为假

    print(bin(11)) #十进制转二进制
    print(oct(11)) #十进制转八进制
    print(hex(11)) #十进制转十六进制

    print(bool(0)) #0,None,空的布尔值为假

    res='你好egon'.encode('utf-8') # unicode按照utf-8进行编码,得到的结果为bytes类型
    res=bytes('你好egon',encoding='utf-8') # 同上
    print(res)

    def func():
    pass
    print(callable('aaaa'.strip)) #判断某个对象是否是可以调用的,可调用指的是可以加括号执行某个功能

    print(chr(90)) #按照ascii码表将十进制数字转成字符
    print(ord('Z')) #按照ascii码表将字符转成十进制数字


    print(dir('abc')) # 查看某个对象下可以用通过点调用到哪些方法

    print(divmod(1311,25)) # 1311 25

    将字符内的表达式拿出运行一下,并拿到该表达式的执行结果
    res=eval('2*3')
    res=eval('[1,2,3,4]')
    res=eval('{"name":"egon","age":18}')
    print(res,type(res))

    with open('db.txt','r',encoding='utf-8') as f:
    s=f.read()
    dic=eval(s)
    print(dic,type(dic))
    print(dic['egon'])


    s={1,2,3}
    s.add(4)
    print(s)

    不可变集合
    fset=frozenset({1,2,3})

    x=111111111111111111111111111111111111111111111111111111111111111111111111111111111111
    # print(globals()) # 查看全局作用域中的名字与值的绑定关系
    # print(dir(globals()['__builtins__']))
    def func():
    x=1
    print(locals())
    # func()
    print(globals())

    字典的key必须是不可变类型
    dic={[1,2,3]:'a'}
    不可hash的类型list,dict,set== 可变的类型
    可hash的类型int,float,str,tuple == 不可变的类型
    hash()
  • 相关阅读:
    core dump相关
    编译与链接的问题
    shell和awk配合使用
    cybergarage-upnp
    miniupnpc
    openssl
    在 linux 下使用 CMake 构建应用程序
    Ubuntu下的多线程下载工具:MultiGet;并与 Firefox 建立关联 uget
    嵌入式web服务器-thttpd
    Android_Layout_xml布局
  • 原文地址:https://www.cnblogs.com/wangcheng9418/p/9183187.html
Copyright © 2011-2022 走看看