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‘
  • 相关阅读:
    ES6入门详解(二) 解构赋值
    python 入门简述
    webpack4x 简述
    ES6入门详解(一) let const
    关于HTML的简述
    按照in条件排序
    Oracle 优化效率
    input输入框校验
    <a>标签操作
    svn安装
  • 原文地址:https://www.cnblogs.com/yuexijun/p/9998209.html
Copyright © 2011-2022 走看看