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

    递归用途:不知道循环什么时候结束。同样的逻辑,当你需要在原来基础上重新执行这个逻辑,可用递归,可用循环。

    def calc(n):
        n =int(n/2) 
        print(n)
        if n > 0:
            calc(n)
    
    calc(10)  # 输出结果为 5 2 1 0
    

     递归的逻辑执行程序(可以用断点法来确认)

    def calc(n):
        n =int(n/2)
        print(n)
        if n > 0:
            calc(n)
        print(n)
    
    calc(10)  #输出结果为 5 2 1 0 0 1 2 5
    

      

     递归的返回值(输出最后一层的值。(判断语句下面return ))

    def calc(n,count):
        print(n,count)
        if count < 5:
            return calc(n/2,count+1)
        else:
            return n
    a = calc(111,1)
    print('a',a)
    

     递归的特性

    必须要有明确的结束条件

    每次进入更深一层递归,问题规模比上一层递归都应有所减少。

    递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以递归调用的次数过多,会导致栈溢出)

    递归练习题(多级菜单寻找节点,尚未完成)

  • 相关阅读:
    如何用VSCode编写Java程序
    使用Xcode + Python进行IOS运动轨迹模拟
    聚类(Clustering)
    异常值(outlier)
    线性回归(regression)
    自适应增强(Adaptive Boosting)
    决策树(Decision Trees)
    支持向量机(SVM)
    朴素贝叶斯(Naive Bayesian)
    ItChat与图灵机器人的结合
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/8535427.html
Copyright © 2011-2022 走看看