zoukankan      html  css  js  c++  java
  • 函数之递归

    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‘
  • 相关阅读:
    洛谷P3258 [JLOI2014]松鼠的新家
    洛谷P3128 [USACO15DEC]最大流Max Flow
    Bzoj1651: [Usaco2006 Feb]Stall Reservations 专用牛棚
    2017-9-26 NOIP模拟赛
    洛谷P1441 砝码称重
    洛谷P1275 魔板
    洛谷P2037 电话号码
    2014-11-3 NOIP模拟赛2
    洛谷P3102 [USACO14FEB]秘密代码Secret Code
    洛谷P3070 [USACO13JAN]岛游记Island Travels
  • 原文地址:https://www.cnblogs.com/yuexijun/p/9998209.html
Copyright © 2011-2022 走看看