• python 递归


    递归:在函数内部,可以调用其他函数,如果一个函数在内部调用自己本身,这个函数就是递归函数。
    def calc(z):                                # 定义一个函数
        s = int(z/2)                 # 计算传入的值除以2
        print(s)                   # 打印计算结果
        if s > 0:                   # 判断计算结果是否大于0
            calc(s)                             # 如果计算结果大于0将结果传入再次调用函数
        print(z)                    # 当结果小于零时打印传入的参数z
    
    
    calc(10)

    输出的结果是:5 2 1 0 1 2 5 10
    
    
    在python的递归函数,每调用一次自己,上一次调用会存到一个栈里,知道符合结束条件,在依次退回上一级结束函数。
    递归的特性:

    必须有一个明确的结束条件

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

    递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,

    栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧.由于栈的大小不是无限的,所以,递归调用的次数过多会导致栈溢出。

    写一个计算计算阶层的例子:
    def factorial(n):
        if n == 1:
            return 1
        return n * factorial(n-1)
    
    
    s = factorial(10)
    print(s)
    二分运算 

    如果规定某一科目成绩分数范围:[0,100],现在小明知道自己的成绩,他让你猜他的成绩,如果猜的高了或者低了都会告诉你,用最少的次数猜出他的成绩,你会如何设定方案?
    def guess_mark(n, high, low):
        mid = int((high +low)/2)
        if mid < n:
            print(mid, "猜低了")
            return guess_mark(n, high, mid)
        elif mid > n:
            print(mid, "猜高了")
            return guess_mark(n, mid, low)
        else:
            return mid, "猜对了"
        
        
    t = guess_mark(18, len(data), 0)
    print(t)
     
    
    
     
     
     
  • 相关阅读:
    数据库级触发器
    Erstudio8.0怎么用?Erstudio8.0汉化版详细使用教程
    Excel 信息对比_数组版
    百万级数据查询优化(数据库)
    sql查询重复记录、删除重复记录方法大全
    工作表(Worksheet)基本操作应用示例
    cxgrid中,如何根据列名或字段名取得footer值
    cxGrid使用汇总
    Delphi XE5通过WebService开发Web服务端和手机客户端
    cxGrid 锁定列
  • 原文地址:https://www.cnblogs.com/zt0903/p/10683838.html
Copyright © 2020-2023  润新知