• 函数之递归


    import sys       调包
    print(sys.getrecursionlimit()) #查询递归层数
    sys.setrecursionlimit(2000) #定义递归层次
    def func(x):
    print(x)
    func(x+1)
    func(1)

    # 递归就是在函数内部无限调用自己 但是python为了不让内存撑爆 默认递归层次为1000次




    2:

    def func(x):  #递归可以用来进行斐波那契 二分查找,汉诺塔  等等
    x //= 2
    print(x)
    if x==0:
    return
    func(x)
    print(x) #递归在每一次执行完时只要不遇见return 在‘return’之前的数据还会在内存里 在内部的调用结束后会一层层的退出
    func(10)
    1;递归进行时之前必须给它一个停止的条件,否则会撑爆系统
    2:递归次数越多,相对层次会越减少
    3:递归效率不高,递归层次越深会导致栈的溢出





    #递归阶乘:
    def func(n):
    if n==1:
    return 1
    return n * func(n-1)
    print(func(4))


    #这里传入n=4 然后条件不满足,开始返回 但是在返回中遇见递归调用,依次把n的每次的递归的层次的n分别赋予3,2,1,当n==1把n返回给了‘func()’这是开始向外返回倒数第二次n==2‘此时func()==1‘, 2*1,3*2,4*6 这里分别把每次向外返回的相乘的值给了’func()‘。
     尾递归:
    def func(n):
      print(n)
      return func(n+1)
    func()
    #在’c‘语言里面尾递归会把每次的运行结果摈弃 而python却依然会存入’栈‘中 但是’js‘会类似于’c‘
  • 相关阅读:
    详解著名的awk Oneliner,第三部分:选择性输出特定行
    显示特定行
    nWave指令
    make 命令
    VIM脚本变量
    terninal 快捷键
    vim 实现begin end 配对 使用matchit插件
    VIM删除重复行
    linux命令--find(1)
    zabbix--创建触发器
  • 原文地址:https://www.cnblogs.com/yuexijun/p/9998209.html
Copyright © 2020-2023  润新知